3

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

我最初认为是因为它没有找到我的 WSGIPath,所以我将文件名更改为application.py并将 EBS 软件配置更新为指向该文件。我还根据 AWS 文档更新了代码库中appto的所有实例。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
    - ... 
4

1 回答 1

2

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

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

于 2018-05-24T03:04:22.770 回答