我在烧瓶文件中调用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 的调试选项与 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