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

Fla*_*viu 38 python wsgi flask

我打电话给app.run(debug=True)我的烧瓶文件.

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

uwsgi -s /tmp/uwsgi.sock -w flask_file_name:app -H /path/to/virtual/env --chmod-socket 666
Run Code Online (Sandbox Code Playgroud)

但是当我收到错误时,我没有在浏览器或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()
Run Code Online (Sandbox Code Playgroud)

gon*_*onz 31

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

如果你想让werkzeug错误页面与uwsgi一起使用,请尝试使用werkzeug的DebuggedApplication中间件:

from werkzeug.debug import DebuggedApplication
app.wsgi_app = DebuggedApplication(app.wsgi_app, True)
Run Code Online (Sandbox Code Playgroud)

这应该是诀窍,但不要忘记仅在开发环境中这样做.

  • 这对我有用,其他答案没有.谢谢. (4认同)
  • 要使调试器提示工作,您必须在uwsgi中使用单个工作程序( - 工作者1, - 线程4) (2认同)

Edw*_*rdr 25

根据Flask邮件列表,您不能使用Flask的调试选项uWSGI,因为它不能在分叉环境中使用.

你看到502因为flask/werkzeug没有向web服务器发送任何数据,所以nginx将返回502.

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

所以,你看到502s的原因就在于此.修复将是添加--catch-exceptionsuWSGI执行.


Rob*_*ers 22

问题是uwsgi不打电话app.run().它叫app().所以你可以这样做:

from flask import Flask
app = Flask(__name__)
app.debug = True
Run Code Online (Sandbox Code Playgroud)