![](/img/trans.png)
[英]Error when Trying to Deploy Flask App to AWS Elastic Beanstalk
[英]When trying to deploy a Flask app to AWS Elastic Beanstalk, I keep getting the "ModuleNotFoundError: No module named 'app'" error message
我正在尝试将 Flask Web 应用程序部署到 AWS Elastic Beanstalk,但它始终失败。 当我启动环境时,它向我抛出 502 错误,并且运行状况设置为 Severe,并出现以下错误:
100.0% 的请求因 HTTP 5xx 失败。 并非所有实例上的 ELB 进程都健康。 ELB 运行状况出现故障或不适用于所有实例。 所有实例上的服务受损。
我检查了日志,似乎问题可能归结为两个(可能相关的)错误:
作为参考,这是我的应用程序的结构:
myApp/
app/
admin/
__init__.py
...
ms/
__init__.py
...
wf/
__init__.py
...
static/
...
templates/
...
__init__.py
models.py
app.py
config.py
requirements.txt
app.py
模块如下所示:
from app import create_app
application = app = create_app()
if __name__ == "__main__":
application.run()
app/__init__.py
模块看起来像:
from flask import Flask
from config import Config
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_cors import CORS, cross_origin
from flask_bootstrap import Bootstrap
from flask_login import LoginManager
from flask_moment import Moment
import os
db = SQLAlchemy()
migrate = Migrate()
bootstrap = Bootstrap()
login = LoginManager()
login.login_view = 'admin.login'
login.login_message = 'Please log in to access this page.'
moment = Moment()
def create_app(config_class=Config):
application = app = Flask(__name__)
app.config.from_object(config_class)
CORS(app)
db.init_app(app)
migrate.init_app(app, db, render_as_batch=True)
bootstrap.init_app(app)
login.init_app(app)
moment.init_app(app)
from app.ms import bp as ms_bp
app.register_blueprint(ms_bp, url_prefix='/ms', template_folder='templates', static_folder='static')
from app.wf import bp as wf_bp
app.register_blueprint(wf_bp, url_prefix='/wf', template_folder='templates', static_folder='static')
from app.admin import bp as admin_bp
app.register_blueprint(admin_bp, url_prefix='/admin', template_folder='templates', static_folder='static')
return app
from app import models
在 AWS EB 环境(在 64 位 Amazon Linux 2/3.1.3 上运行的 Python 3.7)中,我已将 WSGIPath 配置变量设置为app:application
。 我根据以下建议(来自https://forums.aws.amazon.com/thread.jspa?threadID=321677 )执行此操作:
对于 Linux 2 - python 3.7,这转换为“WSGIPath: myapplication:myapp”,其中 myapplication.py 是模块名称,“app”是设置为烧瓶应用程序对象的变量名称。
正如其他帖子所推荐的那样,我什至(实际上有几次)将app.py
更改为application.py
(同时还编辑了 WSGIPath 变量),但没有成功。
我已经在本地测试了该应用程序(使用flask run
和python app.py
),它在我的本地机器上正常运行,但是当我部署它时,出现错误。
我似乎无休止地寻找解决方案,并且我相信我已经正确实施了在以下(以及通过我的调试过程进行的许多其他修复)中发现的部署和其他修复,尽管似乎都没有工作:
如果有人可以帮助我,将不胜感激!
不知何故,在过去尝试修复部署的过程中,我设法做了足够多的工作以使其接近完成。 我重命名了主文件application.py
(来自app.py
),这似乎解决了我的问题。
我还必须为站点的索引值 ('/') 添加一个路由,即使是蓝图也是如此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.