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()
Ответы
Ответ 1
В соответствии с списком рассылки Flask вы не можете использовать опцию Flask debug с uWSGI
, потому что она не должна использоваться в среде forking.
Вы видите 502, потому что флак /werkzeug не отправляет какие-либо данные на веб-сервер, поэтому nginx вернет 502.
Вы можете эмулировать отладчик, используя опцию -catch-exceptions в uWSGI (но, пожалуйста, не делайте этого в производстве)
Итак, причина, по которой вы видите 502s, будет из-за этого. Исправить было бы добавить --catch-exceptions
в uWSGI
при выполнении.
Ответ 2
Этот вопрос старый, но я отправлю его для справки в будущем...
Если вы хотите, чтобы страница ошибок werkzeug работала с uwsgi, попробуйте использовать werkzeug DebuggedApplication
middleware:
from werkzeug.debug import DebuggedApplication
app.wsgi_app = DebuggedApplication(app.wsgi_app, True)
Это должно сделать трюк, но НЕ ЗАБУДЬТЕ делать это ТОЛЬКО в средах разработки.
Ответ 3
Проблема uwsgi
не вызывает app.run()
. Он вызывает app()
. Поэтому вы можете это сделать:
from flask import Flask
app = Flask(__name__)
app.debug = True
Ответ 4
Для меня это сработало только после того, как я объединил два ответа выше, как это:
from flask import Flask
app = Flask(__name__)
from werkzeug.debug import DebuggedApplication
app.wsgi_app = DebuggedApplication(app.wsgi_app, True)
app.debug = True
Ответ 5
Вы решили эту проблему, я столкнулся с точно такой же проблемой. Если вы решите это, скажите, пожалуйста, спасибо :)