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

使用Flask+Gunicorn时Werkzeug是否仍被使用?如何正确部署?

使用Flask搭配Gunicorn部署时,Werkzeug是否仍会被使用?

核心结论

  • 用正确的Gunicorn启动方式时,不会出现双WSGI服务器串联的情况,Werkzeug的开发服务器不会被启动;
  • Werkzeug本身是Flask的核心依赖,无法完全移除,它为Flask提供了请求处理、路由匹配、WSGI协议适配等基础功能,和开发服务器是独立的两个部分。

先纠正你的启动命令问题

你当前用gunicorn --bind 0.0.0.0:5000 app:cli启动是不符合预期用法的。Gunicorn需要的是一个符合WSGI规范的可调用应用实例,而cli是Flask的CLI命令组对象,并非标准WSGI应用。这种启动方式能运行只是巧合(部分Flask版本的CLI对象可能兼容WSGI调用,但这不是设计初衷),而且确实可能触发不必要的Werkzeug服务器逻辑。

正确的启动方式应该指向你的Flask应用工厂或实例:

  1. 指向应用工厂函数:
gunicorn --bind 0.0.0.0:5000 app:create_app
  1. 或者修改代码导出应用实例:
# 在app.py末尾添加
app = create_app()

然后用以下命令启动:

gunicorn --bind 0.0.0.0:5000 app:app

关于Werkzeug的角色

  • 当用Gunicorn正确启动时,Gunicorn作为生产级WSGI服务器,直接接收HTTP请求,然后调用Flask的WSGI应用接口,不会触发Werkzeug的run_simple开发服务器,也就不存在双服务器串联的问题。
  • Werkzeug是Flask的核心依赖,Flask的请求解析、响应生成、路由匹配等核心逻辑都依赖Werkzeug实现,哪怕不用它的开发服务器,也必须保留Werkzeug依赖,无法移除。

总结

  • 不要用app:cli作为Gunicorn的启动入口,改用正确的WSGI应用实例/工厂;
  • 正确部署后,Werkzeug的开发服务器不会运行,但Werkzeug本身依然是Flask不可或缺的一部分;
  • 这才是Flask+Gunicorn部署的预期用法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 04:00:26