使用Gunicorn3启动Flask应用时自动开启Flask开发服务器的问题
问题原因与解决方案
核心原因是你的Flask应用代码中,app.run()语句没有被if __name__ == '__main__':条件判断包裹,导致Gunicorn加载应用模块时,意外触发了Flask开发服务器的启动。
具体解释
当你执行gunicorn3 --workers=1 main:app时,Gunicorn会导入main模块来加载Flask应用实例app。如果你的main.py里直接写了app.run()而没有做条件判断,这行代码会在模块被导入时直接执行——既启动了Gunicorn的生产服务器(监听8000端口),又启动了Flask自带的开发服务器(监听5000端口),就出现了你看到的双重启动日志。
修复步骤
修改你的main.py代码,将app.run()放在if __name__ == '__main__':块内:
from flask import Flask app = Flask(__name__) # 你的路由和业务代码... # 仅当直接运行该脚本时才启动Flask开发服务器 if __name__ == '__main__': app.run()
验证方法
修改完成后重新执行Gunicorn启动命令,此时日志应该只会显示Gunicorn的启动信息,不会再出现Flask开发服务器的相关输出。
内容的提问来源于stack exchange,提问作者Anthr. Line
相关产品推荐
相关产品推荐

