Flask在AWS Elastic Beanstalk部署时出现404错误
我有一个Flask应用程序,在开发用的web服务器和uwsgi上运行得很好,但当我把它部署到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。
2 个回答
0
在Flask应用的架构中,像一个包一样,你会得到一个这样的目录结构:
/yourapplication
/yourapplication
/__init__.py
/static
/style.css
/templates
layout.html
index.html
login.html
/views
/__init_.py
...
...
你会把大部分代码放在__init__.py
文件里,这样你就可以把你的视图和应用当作包的模块来调用。
但是正如这里提到的,你仍然在使用一个叫做application.py的文件,这个文件似乎并不是包的一部分。此外,在这种架构下工作时,你需要特别小心循环导入的问题,具体可以参考网页末尾的说明。
1
为了测试,我决定把我的 application.py 文件改名为 app.py,然后新建一个 application.py 文件,里面的内容是:
from app import app as application
这样做解决了问题!我现在可以正确访问我所有的接口了。
不过,我还是不明白原来的设置到底哪里出了问题。