在部署到Elastic Beanstalk的Flask应用程序的任何路由上的404

时间:2018-05-23 17:47:24

标签: flask elastic-beanstalk flask-restful ebcli

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

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

这是我的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
    - ... 

1 个答案:

答案 0 :(得分:1)

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

我不得不重构我的代码,所以我可以将它移到该块之外,避免循环导入的问题,但现在它的工作正常。