Gunicorn和Flask蓝图

时间:2015-06-03 18:21:31

标签: python nginx flask gunicorn

我在Flask上使用Gunicorn(在nginx上)。假设我有两个Python文件,与Flask蓝图相关联:app.pyapi.py其中api.py的网址前缀为/api为什么app.py中的所有路由都有效,尽管所有Blueprinted(即/api)路由都返回404?

app.py看起来像这样:

from flask import Flask, Blueprint
app = Flask(__name__)
@app.route('/')
def index():
    return '''cheese-bread'''

if __name__ == '__main__':
    app.register_blueprint(api, url_prefix='/api')
    app.run(host='0.0.0.0')

api.py

from flask import Blueprint, jsonify
api = Blueprint('/api', __name__)
@api.route('/')
def index():
    return jsonify({'bread' : 'cheese, please'})

wsgi.py尽可能简单

from app import app

if __name__ == "__main__":
     app.run()

启动脚本不相关,因为使用gunicorn -b 0.0.0.0:8000 wsgi:app

运行开发时会显示404

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:5)

您需要在if __name__ == "__main__"之外注册蓝图,因为当您说from app import app时,它不会在保护区中运行任何代码

from flask import Flask, Blueprint
app = Flask(__name__)
@app.route('/')
def index():
    return '''cheese-bread'''
app.register_blueprint(api, url_prefix='/api')
if __name__ == '__main__':

    app.run(host='0.0.0.0')

当你在wsgi中导入它时,它也会注册蓝图...

或者你可以在wsgi.py

中注册蓝图