如何在Gunicorn中为Uvicorn Worker传递loop参数
强制Gunicorn+UvicornWorker使用asyncio事件循环的方法
当使用Gunicorn搭配UvicornWorker时,要强制指定asyncio事件循环,有两种可靠方法:
方法一:通过--worker-args传递参数
直接在Gunicorn启动命令中,用--worker-args给UvicornWorker传递--loop asyncio参数,完整命令如下:
gunicorn myapp.server.api:app -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:7474 --worker-args="--loop asyncio"
这个参数会把指定的loop配置传递给每个Uvicorn worker进程,覆盖默认的auto模式。
方法二:自定义UvicornWorker类
如果需要长期固化配置,避免每次启动都输入参数,可以自定义一个worker类:
- 创建一个文件(比如
custom_workers.py),写入以下代码:
from uvicorn.workers import UvicornWorker class CustomUvicornWorker(UvicornWorker): CONFIG_KWARGS = {"loop": "asyncio"}
- 启动Gunicorn时指定这个自定义worker:
gunicorn myapp.server.api:app -k custom_workers.CustomUvicornWorker --bind 0.0.0.0:7474
这样每个worker都会自动使用asyncio循环,无需额外传参。
内容的提问来源于stack exchange,提问作者Pranjal Doshi
相关产品推荐
相关产品推荐

