我在烧瓶文件中调用app.run(debug=True)
。
我用uWSGI和nginx部署了它(我跟着these instructions)
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()
答案 0 :(得分:31)
这个问题已经过时了,但我会将其发布以供将来参考......
如果您想让werkzeug错误页面与uwsgi一起使用,请尝试使用werkzeug的DebuggedApplication
中间件:
from werkzeug.debug import DebuggedApplication
app.wsgi_app = DebuggedApplication(app.wsgi_app, True)
这应该可以解决问题,但不要忘记仅在开发环境中执行此操作。
答案 1 :(得分:24)
根据the Flask mailing list,您不能将Flask的调试选项与uWSGI
一起使用,因为它不能在分叉环境中使用。
你看到502因为flask / werkzeug没有向网络服务器发送任何数据, 所以nginx将返回502。
您可以使用uWSGI中的--catch-exceptions选项模拟调试器 (但请不要在制作中这样做)
所以,你看到502s的原因就在于此。修复方法是在执行时将--catch-exceptions
添加到uWSGI
。
答案 2 :(得分:22)
问题是uwsgi
没有调用app.run()
。它调用app()
。所以你可以这样做:
from flask import Flask
app = Flask(__name__)
app.debug = True
答案 3 :(得分:0)
对我来说,只有在将上述两个答案合并后,它才起作用:
from flask import Flask
app = Flask(__name__)
from werkzeug.debug import DebuggedApplication
app.wsgi_app = DebuggedApplication(app.wsgi_app, True)
app.debug = True