部署到AWS Elastic Beanstalk时出现Flask 404错误

时间:2014-05-12 15:22:49

标签: python flask elastic-beanstalk

我有一个使用开发网络服务器和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.

2 个答案:

答案 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文件,它似乎不是包的一部分。 此外,在这样的架构中工作时,您需要非常小心在网页末尾附近的同一链接上提到的循环导入。