我有以下使用 FastApi 和 Uvicorn 的代码用于 ASGI 服务器实现。它应该通过发布请求获取上传的图像,并在返回响应之前使用模型对其进行分类。该错误似乎与 Uvicorn 有关,但我不知所措。任何帮助将非常感激。以前有人见过这样的错误吗?这是代码:
import uvicorn
from fastapi import FastAPI, File, UploadFile
import sys
from PIL import Image
from io import BytesIO
import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
import matplotlib.pyplot as plt
from tensorflow.keras.preprocessing import image
import PIL
import sys
from cv2 import cv2
from scipy import misc
import os
import shutil
from pathlib import Path
from tempfile import NamedTemporaryFile
from typing import Callable
app …Run Code Online (Sandbox Code Playgroud) 我将 Flask 中由 waitress 提供的应用程序迁移到由 uvicorn 提供的 FastAPI,但我无法强制链接(由 index.html 模板内的 url_for 生成)使用 HTTPS 而不是 HTTP。
我和女服务员一起使用:
from waitress import serve
import flask_app
PORT=5000
HOST_IP_ADDRESS='0.0.0.0'
serve(flask_app.app, host=HOST_IP_ADDRESS, port=PORT, url_scheme="https")
Run Code Online (Sandbox Code Playgroud)
对于 uvicorn,我尝试使用 proxy_headers,但这不起作用。我在index.html中使用了解决方法
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
Run Code Online (Sandbox Code Playgroud)
它正确地从静态文件加载了 style.css,但到另一个端点的链接仍然使用 HTTP。
有没有一种简单的方法可以强制 url_for 创建的所有链接都使用 HTTPS?
我们有一个 python 3.9 fastapi 服务器,我们试图在 heroku 上的 uvicorn 上运行它。\n当我们在实例上启动它时,它运行良好,heroku run bash但当它在 dyno 流形上正常启动时,端口不会绑定。
heroku/web.1 Starting process with command `uvicorn app.main:app --workers 4 --port 42374`\napp/web.1 INFO: Uvicorn running on http://127.0.0.1:42374 (Press CTRL+C to quit)\napp/web.1 INFO: Started parent process [4]\napp/web.1 INFO: Started server process [13]\napp/web.1 INFO: Waiting for application startup.\napp/web.1 INFO: Started server process [10]\napp/web.1 INFO: Waiting for application startup.\napp/web.1 INFO: Started server process [12]\napp/web.1 INFO: Waiting for application startup.\napp/web.1 INFO: Started server process [11]\napp/web.1 INFO: Waiting for application …Run Code Online (Sandbox Code Playgroud) 我有一个 React 前端向运行 FastAPI 的 Discord.py 机器人发出请求。在我的测试环境中一切都很好,但是当我部署到远程主机时 uvicorn 抱怨
WARNING: Invalid HTTP request received.
Traceback (most recent call last):
File "/home/container/uvicorn/protocols/http/h11_impl.py", line 136, in handle_events
event = self.conn.next_event()
File "/home/container/h11/_connection.py", line 443, in next_event
exc._reraise_as_remote_protocol_error()
File "/home/container/h11/_util.py", line 76, in _reraise_as_remote_protocol_error
raise self
File "/home/container/h11/_connection.py", line 425, in next_event
event = self._extract_next_receive_event()
File "/home/container/h11/_connection.py", line 367, in _extract_next_receive_event
event = self._reader(self._receive_buffer)
File "/home/container/h11/_readers.py", line 68, in maybe_read_from_IDLE_client
raise LocalProtocolError("illegal request line")
h11._util.RemoteProtocolError: illegal request line
2022-01-15 22:59:11,310 - Invalid HTTP …Run Code Online (Sandbox Code Playgroud) 我对 Python 很陌生。
我正在使用fastapi和制作一个简单的网络服务器uvicorn。
当我构建 Docker 并运行它时,我得到以下内容:
INFO: Started server process [1]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:5000 (Press CTRL+C to quit)
Run Code Online (Sandbox Code Playgroud)
我的代码是:
# Setup FastAPI server
import uvicorn
from fastapi import FastAPI
from fastapi_utils.tasks import repeat_every
from fastapi.middleware.cors import CORSMiddleware
from dotenv import load_dotenv
import os
from pymongo import MongoClient
import logging
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
load_dotenv('env')
# Database
CONNECTION_URL = os.environ['mongoConnectionURL']
DATABASE_NAME = os.environ['mongoDatabaseName']
NEWS_COLLECTION = …Run Code Online (Sandbox Code Playgroud) 我有一个 html 文件,我配置了链接的 URL,如下所示。
app.mount("/static", StaticFiles(directory="static"), name="static")
{{ url_for('static', path='css/style.css') }}
Run Code Online (Sandbox Code Playgroud)
我已经使用 nginx 和 haproxy 为应用程序创建了域。
加载 html 页面时,不会加载 css 和 js 样式,因为它使用的是 http 而不是 https。
Flask url_for 在 docker 运行时生成 http 而不是 https
Jinja2 模板中 url_for 创建的 FastAPI 链接使用 HTTP 而不是 HTTPS
我使用了一些关于类似问题的链接,但没有帮助,因为它是针对 html 文件的。
当我硬编码时它起作用了。我怎样才能使这个静态。我正在使用 uvicorn fastapi。
我尝试通过 pip3 在系统上安装 uvicorn ,但我无法从命令行运行它。有关如何解决此问题的任何指示?
Requirement already satisfied: uvicorn in /home/vhawk19/.local/lib/python3.7/site-packages (0.10.8)
Requirement already satisfied: uvloop>=0.14.0; sys_platform != "win32" and sys_platform != "cygwin" and platform_py
thon_implementation != "pypy" in /home/vhawk19/.local/lib/python3.7/site-packages (from uvicorn) (0.14.0)
Requirement already satisfied: websockets==8.* in /home/vhawk19/.local/lib/python3.7/site-packages (from uvicorn)
(8.1)
Requirement already satisfied: click==7.* in /home/vhawk19/.local/lib/python3.7/site-packages (from uvicorn) (7.0
)
Requirement already satisfied: h11==0.8.* in /home/vhawk19/.local/lib/python3.7/site-packages (from uvicorn) (0.8
.1)
Requirement already satisfied: httptools==0.0.13; sys_platform != "win32" and sys_platform != "cygwin" and platform
_python_implementation != "pypy" in /home/vhawk19/.local/lib/python3.7/site-packages …Run Code Online (Sandbox Code Playgroud) 我正在处理在 FastAPI 上对远程 ubuntu 服务器进行的项目沉积。我将尝试通过命令从终端(使用 SSH 连接)运行项目
gunicorn -k uvicorn.workers.UvicornWorker main:app
Run Code Online (Sandbox Code Playgroud)
输出是
gunicorn -k uvicorn.workers.UvicornWorker main:app
[2020-07-14 15:24:28 +0000] [23102] [INFO] Starting gunicorn 20.0.4
[2020-07-14 15:24:28 +0000] [23102] [INFO] Listening at: http://127.0.0.1:8000 (23102)
[2020-07-14 15:24:28 +0000] [23102] [INFO] Using worker: uvicorn.workers.UvicornWorker
[2020-07-14 15:24:28 +0000] [23104] [INFO] Booting worker with pid: 23104
[2020-07-14 15:24:28 +0000] [23104] [INFO] Started server process [23104]
[2020-07-14 15:24:28 +0000] [23104] [INFO] Waiting for application startup.
[2020-07-14 15:24:28 +0000] [23104] [INFO] Application startup complete.
Run Code Online (Sandbox Code Playgroud)
但我需要该项目在服务器的 IP 地址上可用。如果我尝试像 …
我有一个 fastapi 应用程序,我想记录在它上面发出的每个请求。我正在尝试为此使用 loguru 和 uvicorn,但我不知道如何打印与每个请求关联的标头和请求参数(如果有)。
我想要这样的东西:
INFO 2020-08-13 13:36:33.494 uvicorn.protocols.http.h11_impl:send - 127.0.0.1:52660 - "GET
/url1/url2/ HTTP/1.1" 400 params={"some": value, "some1":value}
Run Code Online (Sandbox Code Playgroud)
有办法吗?谢谢你的帮助。
这里有一些链接:
我正在将FastAPI与Uvicorn一起使用来实现 u-service,它接受请求正文中的 json 有效负载。由于请求正文可能非常大,我希望服务接受 gzip 压缩。我该如何做到这一点?
到目前为止,如下:
失败并响应:
状态:400 错误请求
{“detail”:“解析正文时出错”}