我正在尝试托管一个Flask应用程序,该应用程序通过eb cli在Elastic Beanstalk上使用Flask-RESTful实现REST API。我已经成功地部署了我的应用程序,并且在我的事件日志中没有收到任何错误消息。我可以成功地通过ssh进入实例并运行脚本来预先填充我的数据库和所有内容。但是每当我尝试访问任何路由时,我总是得到一个404错误。
我最初认为这是因为它找不到我的WSGIPath,所以我将文件名改为application.py,并更新EBS软件配置以指向该文件。我还根据亚马逊网络服务文档将代码库中的所有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
- ... 发布于 2018-05-24 11:04:23
我才意识到发生了什么。我正在尝试注册if __name__ == "__main__":块中的设计图。但是由于application.py文件不是由Elastic Beanstalk直接运行的,所以它永远不会到达这些行,所以我试图访问的端点并不存在。
我不得不重构我的代码,这样我就可以将它移出该块,并避免循环导入的问题,但现在一切都正常工作。
https://stackoverflow.com/questions/50494512
复制相似问题