我们是否可以在不使用 uvicorn 的情况下仅使用 nginx + gunicorn 作为 Web 服务器和 WSGI 构建一个 fastapi 应用程序?
Can we build a fastapi application just with nginx + gunicorn as web server and WSGI without using uvicorn?
我们是否可以在不使用 uvicorn 的情况下仅使用 nginx + gunicorn 作为 Web 服务器和 WSGI 构建一个 fastapi 应用程序。我问这个的原因是我的应用程序没有低级异步活动。所以我不需要 ASGI (uvicorn)。那么我可以排除使用它并继续使用 nginx 和 gunicorn 吗?
So can I just exclude using it and proceed with Nginx and gunicorn?
简短回答:不,你不能。
稍微长一点的答案:FastAPI 的异步功能是可选的,但是,FastAPI 基于 ASGI 规范并构建在 ASGI 框架之上,它不会强制您在应用程序中使用协程,但是您需要一个 ASGI HTTP 服务器运行 FastAPI。
为什么?
ASGI 和 WSGI 是完全不同的规范,如果你的应用是基于 ASGI 规范的,你的应用需要 3 个基本参数,而我们在 WSGI 中没有。
scope:连接范围信息,一个字典,至少包含一个指定传入协议的类型键
receive:一个可等待的可调用对象,它将在可用时产生一个新的事件字典
send:一个可等待的可调用函数,将单个事件字典作为位置参数,一旦发送完成或连接关闭return 11=]
我们是否可以在不使用 uvicorn 的情况下仅使用 nginx + gunicorn 作为 Web 服务器和 WSGI 构建一个 fastapi 应用程序。我问这个的原因是我的应用程序没有低级异步活动。所以我不需要 ASGI (uvicorn)。那么我可以排除使用它并继续使用 nginx 和 gunicorn 吗?
So can I just exclude using it and proceed with Nginx and gunicorn?
简短回答:不,你不能。
稍微长一点的答案:FastAPI 的异步功能是可选的,但是,FastAPI 基于 ASGI 规范并构建在 ASGI 框架之上,它不会强制您在应用程序中使用协程,但是您需要一个 ASGI HTTP 服务器运行 FastAPI。
为什么?
ASGI 和 WSGI 是完全不同的规范,如果你的应用是基于 ASGI 规范的,你的应用需要 3 个基本参数,而我们在 WSGI 中没有。
scope:连接范围信息,一个字典,至少包含一个指定传入协议的类型键
receive:一个可等待的可调用对象,它将在可用时产生一个新的事件字典
send:一个可等待的可调用函数,将单个事件字典作为位置参数,一旦发送完成或连接关闭return 11=]