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

Gunicorn部署Flask应用时如何禁用自动重载功能

解决Gunicorn部署Flask时Werkzeug自动重载的问题

首先明确两个基础前提:

  • flask run是Flask官方提供的开发用内置服务器命令,和你使用的Gunicorn是完全独立的Web服务器程序,因此flask run的--no-reload参数无法直接和Gunicorn搭配使用。
  • Gunicorn本身默认不会开启代码重载,只有手动添加--reload启动参数才会触发Gunicorn自带的重载机制,如果你启动命令中没有加该参数,不用考虑Gunicorn侧的重载配置。

你遇到的自动重载触发原因,是当前的Gunicorn启动命令中,默认使用了FLASK_ENV:-development的配置:当FLASK_ENV为development时,Flask会默认开启Werkzeug内置的调试重载器,即使用Gunicorn启动应用也会触发该机制。

解决方案

方案1:生产环境配置规范(优先推荐)

生产环境直接设置FLASK_ENV=production环境变量即可,该配置下Flask会自动关闭调试模式、禁用Werkzeug重载器,无需修改其他代码或启动参数。
启动命令示例:

# 先设置生产环境变量,再启动Gunicorn
export FLASK_ENV=production
gunicorn -b 0.0.0.0:5000 \
  --workers 12 \
  --log-level "${LOGGING_LEVEL}" \
  --preload "wsgi:create_app('${FLASK_ENV}')" \
  --timeout 240

注:你原有的启动命令存在语法错误,--preload参数行末尾缺少续行符\,会导致命令执行报错,上面的示例已经修正了该问题。

方案2:指定禁用重载(适用于需要保留development环境的场景)

如果你需要保留FLASK_ENV为development,同时要禁用重载,可以在初始化Flask实例时显式指定关闭重载:
修改你wsgi.py中的create_app函数,在生成Flask实例时添加参数:

app = Flask(__name__, use_reloader=False)

或者在应用配置中添加:

app.config["USE_RELOADER"] = False

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:36:05