python - Gunicorn 和 Flask 蓝图

标签 python nginx flask gunicorn

我将 Gunicorn(在 nginx 上)与 Flask 一起使用。假设我有两个 Python 文件,与 Flask 蓝图链接:app.pyapi.py 其中 api.py 有 url 前缀/API尽管所有蓝图(即 /api)路由都返回 404,但为什么 app.py 中的任何路由都有效?

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

如有任何帮助,我们将不胜感激。

最佳答案

您需要在 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 中注册蓝图

关于python - Gunicorn 和 Flask 蓝图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30627772/

相关文章:

python - 警告 :tensorflow:TensorFlowDNNRegressor class is deprecated. 请考虑使用 DNNRegressor 作为替代方案

python - 如何迭代工作簿中的工作表,openpyxl

java - 在 Websocket 上通过 Nginx 转发用户 IP

python - Flask WTF 'StringField'对象没有属性 'translate'

python-3.x - 从 ImmutableMultiDict 中提取的智能方法(列表中的字典)

python - 无法通过 http.client 正确重新连接

python - 解析python脚本的参数

ruby-on-rails-3 - Postgresql 的模式和后台作业

python - uwsgi 破管 - django, nginx

python - 不允许的方法 - 所请求的 URL 不允许该方法