Flask debug=True 在通过 uWSGI 时不起作用



我在烧瓶文件中调用app.run(debug=True)

我已经用uWSGI和nginx部署了它(我遵循了这些说明)

uwsgi -s /tmp/uwsgi.sock -w flask_file_name:app -H /path/to/virtual/env --chmod-socket 666

但是当我收到错误时,我在浏览器或uWSGI日志中没有得到任何调试信息。

有什么想法吗?

flask_file_name.py:

from flask import Flask, make_response, Response, jsonify
import json
app = Flask(__name__)
app.debug = True
@app.route("/")
def hello():
    return "Hello World!"
if __name__ == '__main__':
    app.run()

这个问题很旧,但我会发布这个以供将来参考......

如果你想让werkzeug错误

页面与uwsgi一起使用,请尝试使用werkzeug的DebuggedApplication中间件:

from werkzeug.debug import DebuggedApplication
app.wsgi_app = DebuggedApplication(app.wsgi_app, True)

这应该可以解决问题,但不要忘记仅在开发环境中执行此操作。

根据 Flask

邮件列表,您不能将 Flask 的调试选项与 uWSGI 一起使用,因为它不能在分叉环境中使用。

您会看到 502,因为 flask/werkzeug 不会向网络服务器发送任何数据, 所以nginx将返回502。

您可以使用 uWSGI 中的 --catch-exceptions 选项模拟调试器 (但请不要在生产中这样做)

所以,你看到502的原因就是因为这个。解决方法是在执行时向uWSGI添加--catch-exceptions

问题是uwsgi不调用app.run()。它调用app() .因此,您可以这样做:

from flask import Flask
app = Flask(__name__)
app.debug = True
对我来说,

只有在我像这样结合上面的两个答案后,它才起作用:

from flask import Flask
app = Flask(__name__)
from werkzeug.debug import DebuggedApplication
app.wsgi_app = DebuggedApplication(app.wsgi_app, True)
app.debug = True

最新更新