amazon-web-services - 您的 WSGIPath 引用了一个不存在的文件

标签 amazon-web-services flask amazon-elastic-beanstalk

我正在尝试将 Flask 应用程序上传到 AWS,但这样做时收到错误:

Your WSGIPath refers to a file that does not exist.

在网上进行一些挖掘后,我发现在 .ebextensions 文件夹中,我应该指定路径。没有 .ebextensions 文件夹,因此我创建了一个文件夹并将以下代码添加到名为 settings.config 的文件中:

option_settings:
  "aws:elasticbeanstalk:container:python":
    WSGIPath: project/application.py

WSGIPath 是 application.py 文件的正确路径,因此我不确定是什么引发了此错误。我是否正确更改了 WSGIPath,是否有更好的方法,或者是否存在其他问题导致这种情况发生?谢谢。

最佳答案

在 AWS 上部署 Flask 可能会出现很多配置问题。我遇到了和你类似的问题,所以我至少可以向你展示我是如何解决 WSGI 错误的。

首先,显然你可以在没有 .ebextensions 文件夹的情况下执行此操作(请参阅这篇文章 here 。并查看 davetw12 的答案。但是,请注意,虽然这有效,但我并不完全确定 davetw12 关于 .ebextensions 的结论是正确的,基于下面的一些评论)。相反,(在终端中),我导航到与 .elasticbeanstalk 目录相同级别的项目,并使用命令 eb config。这将打开一个选项列表,您可以设置这些选项来配置您的 beanstalk 应用程序。向下浏览选项,直到找到 WSGI 路径。我注意到您已将其设置为 project/application.py,但是,这不应包含文件夹引用,而应包含 application.py。这是我的 Mac 终端中的外观(WSGI 路径位于底部附近)。

enter image description here

请注意,一旦您获得该集,EB 可能会重新部署。没关系。让它。

获得该设置后,进入 application.py 文件并确保调用您的应用程序 application。例如,我的看起来像这样:

from flask import Flask
from flask import render_template
application = Flask(__name__)

@application.route('/')
@application.route('/index')
def index():
    return render_template('index.html',
                           title='Home')

这消除了 WSGI 路径错误 - 尽管我仍然需要解决以下一些其他问题:-) 但这是一组不同的问题。

关于amazon-web-services - 您的 WSGIPath 引用了一个不存在的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31169260/

相关文章:

amazon-web-services - 如何为 AWS Lambda 设置重试超时

python - 通过 sqlalchemy 添加对象抛出 KeyError : 'SQLALCHEMY_TRACK_MODIFICATIONS'

django - Elastic Beanstalk 上的 Django 中的定期任务(可能使用 celerybeat)

amazon-web-services - 在 AWS 中 - 不可变和蓝/绿部署之间的区别?

amazon-web-services - 为什么 eb deploy 在第一次部署时失败?

java - 使用log4j2在AWS日志中记录垃圾值

python - Elastic BeanSTAlk CLI 安装错误

python - 如何绑定(bind)flask-wtform UnboundField?

javascript - 如何使用Python/Flask在heroku中显示index.html页面

amazon-web-services - 如何使用 CLI 删除 AWS S3 中的版本存储桶?