python-3.x - 在 Elastic Beanstalk 上部署 Flask 应用程序 : No module named 'application'

标签 python-3.x amazon-web-services flask amazon-elastic-beanstalk

有一个 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/

相关文章:

python - 有没有更简洁的方法来测试 python3 中的长参数列表?

python - 如何在现有 csv 文件中写入新行而不将其附加到最后一行?

python-3.x - 有3个数组。我需要制作 3d 表面。如何解决?

node.js - 如何使用 Lambda 和 DynamoDB 在日期范围之间进行扫描?

amazon-web-services - 从私有(private) Docker 存储库将镜像部署到 AWS Elastic Beanstalk

python - Azure 上托管的 Flask 应用程序出现内部服务器错误

mysql - 无法导入名称 'Datetime' python flask sqlalchemy

python - 在 Flask 网络应用程序中维护 MySQL 与 peewee 的连接

python - 迭代时如何获取 2D Numpy 数组中的位置?

android - 无法访问 DynamoDB 表