Docker中Gunicorn启动Flask应用失败:无法解析'app_instance.app'
修复Gunicorn启动时"Failed to parse 'app_instance.app'"错误
Gunicorn不支持直接引用嵌套属性作为应用入口,app:app_instance.app这种写法不符合它的解析规则,所以会触发报错。下面是两种可行的修复方案:
方案一:在app.py中导出顶层Flask实例
在你的app.py文件末尾添加一行代码,把嵌套的Flask实例赋值给一个顶层变量:
# app.py 末尾新增 application = app_instance.app
然后修改Dockerfile里的CMD命令:
exec gunicorn --bind :8080 --workers 1 --threads 8 --timeout 0 app:application
方案二:通过函数返回Flask实例
在app.py中定义一个无参函数,返回你的Flask实例:
# app.py 中新增 def get_app(): return app_instance.app
然后修改Dockerfile的CMD命令,调用这个函数:
exec gunicorn --bind :8080 --workers 1 --threads 8 --timeout 0 app:get_app()
这两种方法都能让Gunicorn正确识别到Flask应用实例,解决启动报错的问题。
内容的提问来源于stack exchange,提问作者Devid Mercer
相关产品推荐
相关产品推荐

