You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署在Digital Ocean的Flask应用遭遇Gunicorn Worker超时错误,调整超时设置后问题仍未解决

我来帮你排查下这个Gunicorn超时的问题,你尝试的几个方法里可能有几个关键细节没到位,咱们一步步梳理:

1. 配置文件未被正确加载

你编写了gunicorn_config.py配置文件,但当前的Procfile启动命令并没有指定加载这个文件——Gunicorn不会自动识别这个命名的配置文件,必须通过-c参数明确指定。

把你的Procfile修改成这样就能让配置文件生效了:

web: gunicorn -c gunicorn_config.py app:app

这样一来,配置文件里的timeout = 600会生效,也不用在命令行重复写--timeout 600了。

2. 修改Gunicorn源码配置是无效且不推荐的

你直接修改了env/Lib/site-packages/gunicorn/config.py里的默认值,这种操作完全没必要:

  • 一旦虚拟环境升级或重装Gunicorn,这个修改就会被覆盖;
  • 如果启动命令里指定了--timeout或者加载了自定义配置文件,源码里的默认值会被直接覆盖,等于白改。
    建议你把这个修改还原回去,避免后续出现不可控的问题。

3. 检查反向代理的超时限制(关键!)

如果你的Flask应用前面搭配了Nginx(Digital Ocean部署Flask通常会这么做),Nginx本身也有超时设置。如果Nginx的超时时间比Gunicorn的短,Nginx会提前断开连接,进而触发Gunicorn的worker超时错误。

你需要在Nginx的站点配置里调整相关参数,比如:

location / {
    proxy_pass http://127.0.0.1:5000;
    proxy_connect_timeout 600s;
    proxy_read_timeout 600s;
    proxy_send_timeout 600s;
}

修改完成后记得重启Nginx服务生效。

4. 考虑worker类型的适配问题

如果你的大请求是阻塞型操作(比如处理大文件上传、长时间数据库查询/计算),Gunicorn默认的sync worker会被长时间占用,即使设置了超时,也可能因为无法及时释放资源而触发超时。

这种情况下建议换成异步worker,比如使用gevent:

  1. 先安装依赖:pip install gevent
  2. 在gunicorn_config.py里添加配置:
worker_class = "gevent"

或者在启动命令里加上--worker-class gevent。

按照上面的步骤调整后,应该就能解决大请求下的worker超时问题了。

内容的提问来源于stack exchange,提问作者Joa0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 14:28:12