【问题标题】:404 on any route for Flask app deployed to Elastic Beanstalk部署到 Elastic Beanstalk 的 Flask 应用程序的任何路由上的 404
【发布时间】:2018-11-02 19:20:19
【问题描述】:

我正在尝试通过eb cli 在 Elastic Beanstalk 上托管一个使用 Flask-RESTful 实现 REST API 的 Flask 应用程序。我已成功部署我的应用程序,但我的事件日志中没有收到任何错误消息。我可以成功地通过 ssh 进入实例并运行脚本来预填充我的数据库和所有内容。但是每当我尝试访问任何路由时,我都会不断收到 404 错误。

我最初认为是因为它没有找到我的 WSGIPath,所以我将文件名更改为 application.py 并更新了 EBS 软件配置以指向该文件。我还根据 AWS 文档在代码库中将所有 app 实例更新为 application。依然没有。有谁知道可能出了什么问题?

这是我的application.py

from flask import Flask

from config import Config

CONFIG = Config()

# AWS Elastic Beanstalk expects an `application` variable.
application = Flask(__name__)

if __name__ == "__main__":
    # Importing these here to avoid issue with circular imports
    from endpoints.v1.exports import exports_api
    from endpoints.v1.imports import imports_api

    application.register_blueprint(exports_api, url_prefix="/api/v1")
    application.register_blueprint(imports_api, url_prefix="/api/v1")

    application.run(debug=CONFIG.DEBUG)

这是application.py 文件在文件夹结构中的位置:

- project root
    - ...
    - application.py
    - ... 

【问题讨论】:

  • Flask 应用程序是否正确启动?您是否尝试过将应用程序托管在不同的端口上(仅用于测试它)并允许通过防火墙?此外,如果您将所有内容都放在操作系统根目录中,这不是最好的主意,并且可能会导致后续问题。愚蠢的问题,但你确定你访问的是正确的 URL,因为奇怪的是没有日志。
  • 这里的root 是项目的根目录,而不是操作系统。我的错,我会更新问题以使其更清楚。对于上下文,我对 Flask 和 EBS 都是新手,那么如何测试应用程序是否正确启动?我假设确实如此,因为我没有像我读过的其他人那样在事件日志中收到 WSGIPath 错误。我正在访问 EBS 环境菜单上显示的 URL。我复制并粘贴了一百万次以确保我不断得到 404。
  • 所以 Flask 默认在 5000 端口上运行。你可以反向代理 80 上的任何内容以通过 WSGI 连接到那个,或者如果你想公开它,可以在 80 上托管 Flask?否则,要使用 5000,您需要允许它通过 AWS 防火墙。当您访问正常链接时,我认为您没有访问 Flask。此外,Flask 不是 HTML 页面,因此您实际上必须以 python application.py 开头,您可能知道但这里涵盖了所有基础。

标签: flask amazon-elastic-beanstalk flask-restful ebcli


【解决方案1】:

刚刚意识到发生了什么。我试图在 if __name__ == "__main__": 块内注册蓝图。但由于 application.py 文件不是由 Elastic Beanstalk 直接运行的,因此它从未到达这些行,因此我试图命中的端点不存在。

我必须重构我的代码,以便将其移出该块并避免循环导入问题,但现在一切正常。

【讨论】:

    猜你喜欢
    • 2022-06-11
    • 2017-02-17
    • 2020-11-14
    • 2018-11-09
    • 2020-04-29
    • 2021-10-11
    • 2023-03-09
    • 2021-01-19
    • 2021-01-08
    相关资源
    最近更新 更多