独角兽和烧瓶的蓝图

2 python nginx flask gunicorn

我在Flask上使用Gunicorn(在Nginx上)。假设我有两个与Flask Blueprint链接的Python文件:app.pyapi.py其中api.pyurl前缀为/api为什么app.py所有蓝图(即/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')
Run Code Online (Sandbox Code Playgroud)

api.py

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

wsgi.py 尽可能简单

from app import app

if __name__ == "__main__":
     app.run()
Run Code Online (Sandbox Code Playgroud)

启动脚本与之无关,因为在使用以下命令进行开发时会显示404。 gunicorn -b 0.0.0.0:8000 wsgi:app

任何帮助将不胜感激。

Jor*_*ley 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')
Run Code Online (Sandbox Code Playgroud)

这样,当您将其导入到wsgi中时,它也已注册了蓝图...

或者,您可以在wsgi.py中注册蓝图