39

我调用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 日志中没有得到任何调试信息。

有任何想法吗?

烧瓶文件名.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()
4

4 回答 4

34

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

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

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

这应该可以解决问题,但不要忘记仅在开发环境中这样做。

于 2013-07-24T16:29:01.233 回答
26

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

你看到 502 是因为 flask/werkzeug 没有向网络服务器发送任何数据,所以 nginx 会返回一个 502。

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

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

于 2012-05-05T09:12:09.017 回答
24

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

from flask import Flask
app = Flask(__name__)
app.debug = True
于 2012-04-28T15:33:30.430 回答
3

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

from flask import Flask
app = Flask(__name__)

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

app.debug = True
于 2018-06-19T20:44:32.040 回答