我有一个使用开发网络服务器和uwsgi的Flask应用程序,但在部署到AWS Elastic Beanstalk时,我所有外部定义的路径都是404。
我使用了此处推荐的更大的应用程序结构:http://flask.pocoo.org/docs/patterns/packages/
所以我有一个看起来像这样的application.py:
import settings
from flask import Flask
app = Flask(__name__)
app.config.from_object(settings)
application = app
#Ignore not used -> this pulls the views into the main app.
#see http://flask.pocoo.org/docs/patterns/packages/
import messages.views
#more imported applications here
@application.route("/", methods=['GET', 'POST'])
def hello():
#health check endpoint.
return "hi"
application.py中的hello方法正确返回200,但是message.views中的调用都返回404.
答案 0 :(得分:0)
作为测试,我决定将我的application.py文件重命名为app.py并创建一个包含以下内容的新application.py文件:
from app import app as application
这解决了这个问题!我现在可以正确访问我的所有端点。
不幸的是,我仍然不明白原始设置有什么问题。
答案 1 :(得分:0)
正如烧瓶应用程序架构中的http://flask.pocoo.org/docs/patterns/packages/文档中提到的那样,您可以获得一个类似于以下内容的目录结构:
/yourapplication
/yourapplication
/__init__.py
/static
/style.css
/templates
layout.html
index.html
login.html
/views
/__init_.py
...
...
您可以将大部分代码放在__init__.py
个文件中,以便将视图和应用程序作为软件包的模块调用。
但正如这里提到的,你仍在使用application.py文件,它似乎不是包的一部分。 此外,在这样的架构中工作时,您需要非常小心在网页末尾附近的同一链接上提到的循环导入。