Gunicorn和Flask蓝图

3
我正在使用 Gunicorn(在 nginx 上)与 Flask。假设我有两个 Python 文件,通过 Flask Blueprint 连接:app.pyapi.py,其中 api.py 具有 URL 前缀 /api。为什么 app.py 中的任何路由都有效,而所有经过 Blueprint 处理的路由(即 /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()

启动脚本与404错误无关,因为在使用gunicorn -b 0.0.0.0:8000 wsgi:app进行开发时出现了404错误。非常感谢您的帮助。
1个回答

9

您需要在if __name__ == "__main__"之外注册蓝图,因为当您输入from app import app时,它不会运行guardblock中的任何代码。

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中注册蓝图。

感觉自己从2015年开始就卡在这个问题上了。谢谢Joran! - Yash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接