【问题标题】:Gunicorn and Flask blueprintsGunicorn 和 Flask 蓝图
【发布时间】:2015-06-04 02:25:11
【问题描述】:

我在 Flask 中使用 Gunicorn(在 nginx 上)。假设我有两个 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

任何帮助将不胜感激。

【问题讨论】:

    标签: python nginx flask gunicorn


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-14
      • 2017-05-11
      • 1970-01-01
      • 2018-10-23
      • 2021-10-04
      • 2012-11-13
      • 2015-11-15
      • 2013-01-12
      相关资源
      最近更新 更多