fastapi使用gunicorn还是uvicorn

Uvicorn 在单进程上使用异步协程是有优势的,但是如果接口方法是同步的则走的多进程模式,也就是 workers 的数量, 这个时候 uvicorn 不如 gunicorn,性能上会有些限制。

uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4


Gunicorn 是一个使用 WSGI 标准的应用服务器。

Flask 和 Django可以直接使用 Gunicorn 运行,但是FastAPI不能直接使用 Gunicorn,因为FastAPI 使用最新的ASGI 标准。

Gunicorn 可以作为进程管理器使用,并且可以设定进程的类型,Uvicorn 可以作为 Gunicorn的进程类型。

gunicorn main:app --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000 

使用这种组合,Gunicorn 将充当进程管理器,监听端口和IP。它会将接收到的数据传输到运行 Uvicorn 类的工作进程,然后,Uvicorn 将数据传输给 FastAPI。

Gunicorn 可以管理失效的进程,如果进程死掉会重启一个新的进程以维持工作进程的数量。

你可能感兴趣的:(Python,fastapi)