我正在使用本教程和它们具有的相同“ application.py”文件将网络应用程序部署到弹性beantalk:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-flask.html#python-flask-setup-venv
去该站点时出现502错误,并且环境的健康状况下降/严重。当我检查日志时,我看到了(我认为是问题的根源):
Jun 19 22:05:18 ip-172-31-15-237 web: File "/usr/lib64/python3.7/importlib/__init__.py", line 127, in import_module
Jun 19 22:05:18 ip-172-31-15-237 web: return _bootstrap._gcd_import(name[level:], package, level)
Jun 19 22:05:18 ip-172-31-15-237 web: File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
Jun 19 22:05:18 ip-172-31-15-237 web: File "<frozen importlib._bootstrap>", line 983, in _find_and_load
Jun 19 22:05:18 ip-172-31-15-237 web: File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked
Jun 19 22:05:18 ip-172-31-15-237 web: ModuleNotFoundError: No module named 'application'
这是我的application.py文件:
from flask import Flask
# print a nice greeting.
def say_hello(username = "World"):
return '<p>Hello %s!</p>\n' % username
# some bits of text for the page.
header_text = '''
<html>\n<head> <title>EB Flask Test</title> </head>\n<body>'''
instructions = '''
<p><em>Hint</em>: This is a RESTful web service! Append a username
to the URL (for example: <code>/Thelonious</code>) to say hello to
someone specific.</p>\n'''
home_link = '<p><a href="/">Back</a></p>\n'
footer_text = '</body>\n</html>'
# EB looks for an 'application' callable by default.
application = Flask(__name__)
# add a rule for the index page.
application.add_url_rule('/', 'index', (lambda: header_text +
say_hello() + instructions + footer_text))
# add a rule when the page is accessed with a name appended to the site
# URL.
application.add_url_rule('/<username>', 'hello', (lambda username:
header_text + say_hello(username) + home_link + footer_text))
# run the app.
if __name__ == "__main__":
# Setting debug to True enables debug output. This line should be
# removed before deploying a production app.
#application.debug = True
application.run()
这是我的requirements.txt文件:
click==7.1.2
Flask==1.1.2
itsdangerous==1.1.0
Jinja2==2.11.2
MarkupSafe==1.1.1
numpy==1.16.3
pandas==0.24.2
python-dateutil==2.8.1
pytz==2020.1
six==1.15.0
Werkzeug==1.0.1
我上传到Elastic beantalk的压缩文件夹仅包含这两个文件。我确实也有一个虚拟环境,但是该教程说您不需要它,所以我摆脱了它。
我也正在运行Python 3.7.1,所以我有pip3。而且我应该注意,仅当我运行python代码时,Web应用程序才能正常工作。
答案 0 :(得分:3)
可能的原因是使用std::forward<T>(x)
环境而不是std::move
。
Python环境及其Linux发行版的列表为here。
通过您提供的链接:
在本教程中,我们使用Python 3.6 和相应的Elastic Beanstalk平台版本。
在Amazon Linux 2
环境中支持Python 3.6,而在Amazon Linux 1
环境中使用Python 3.7时。
AL1和AL2之间有很多区别,这使它们不兼容。
答案 1 :(得分:0)
我和你有同样的问题。降级为AL1确实可以解决此问题,但会带来更多问题。
我发现您可以通过在文件末尾添加以下行来使您的应用兼容。
app = application
另外,您可以在定义烧瓶实例时执行以下操作:
application = app = Flask(__name__)
不要忘记将两者都导入到application.py中。
之所以可行,是因为aws需要将Flask实例称为应用程序,而gunicorn需要将Flask实例称为应用程序,这样您就可以使他们俩都满意。
世界上的每个人都称其为Flask实例应用execpt,适用于AWS。