我正在尝试通过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
- ...
答案 0 :(得分:1)
刚刚意识到发生了什么。我试图在if __name__ == "__main__":
块内注册蓝图。但由于application.py
文件不是由Elastic Beanstalk直接运行的,因此它永远不会到达那些行,所以我试图命中的端点不存在。
我不得不重构我的代码,所以我可以将它移到该块之外,避免循环导入的问题,但现在它的工作正常。