有一个 Flask 应用程序,它在主模块的 __init__.py
文件中具有 Flask application
初始化,就像 Flask 文档 here 一样。 (除非我不使用应用程序工厂类型函数)
myapp/
myapp/
__init__.py # application = Flask(__name__) is here
static/
templates/
...
requirements.txt
当 FLASK_APP
设置为 myapp
时,本地环境可以通过 flask run
正常运行。
我尝试通过 eb-cli 进行 Beanstalk 部署,并且在 .ebextensions/options.yml 中设置了 FLASK_APP
,如下所示:
option_settings:
aws:elasticbeanstalk:application:environment:
LC_ALL: en_US.utf8
FLASK_APP: myapp
FLASK_ENV: production
然后我就跑了:
eb init -p python-3.7 myapp --region us-east-1
eb create myapp-env
它似乎启动正常,但环境变得退化,我收到 502 并且日志显示 Flask 应用程序由于 No module named 'application'
而无法正确启动
我的印象是设置 FLASK_APP
足以找到 Flask 应用实例。
在此上下文中如何通过 Elastic Beanstalk 部署 Flask 应用程序?我需要以某种方式进一步指定入口点吗?
最佳答案
基于评论。
该问题是由使用自定义 Flask 应用程序路径引起的。默认情况下,EB 希望应用程序位于 application.py
文件中。
解决方案是使用 aws:elasticbeanstalk:container:python 中的 WSGIPath
指定自定义路径选项:
option_settings:
aws:elasticbeanstalk:container:python:
WSGIPath: myapp:application
关于python-3.x - 在 Elastic Beanstalk 上部署 Flask 应用程序 : No module named 'application' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64000856/