Flask debug = True nie działa podczas przechodzenia przez uWSGI

Wzywam app.run(debug=True) w moim pliku flask.

[[3]} i mam go wdrożony z uWSGI i nginx (postępowałem te instrukcje )
uwsgi -s /tmp/uwsgi.sock -w flask_file_name:app -H /path/to/virtual/env --chmod-socket 666

Ale kiedy pojawia się błąd, nie dostaję żadnych informacji o debugowaniu w przeglądarce lub w dzienniku uWSGI.

Jakieś pomysły?

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()
Author: Anish Ramaswamy, 2012-04-28

4 answers

Zgodnie z listą dyskusyjną Flask nie można użyć opcji debugowania Flask z uWSGI, ponieważ nie jest ona używana w środowisku forkingowym.

Widzisz 502 ponieważ flask / werkzeug nie wysyła żadnych danych do serwera www, więc nginx zwróci 502.

Możesz emulować debugger używając opcji --catch-exceptions w uWSGI (ale proszę, nie rób tego w produkcji)

Dlatego widzisz 502. The fix would należy dodać --catch-exceptions do uWSGI przy wykonaniu.
 23
Author: Edwardr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-05 09:12:09

To pytanie jest stare, ale zamieszczę to w przyszłości...

Jeśli chcesz, aby strona błędu werkzeug działała z uwsgi, spróbuj użyć middleware DebuggedApplication werkzeug:
from werkzeug.debug import DebuggedApplication
app.wsgi_app = DebuggedApplication(app.wsgi_app, True)

To powinno załatwić sprawę, ale nie zapomnij zrobić tego tylko w środowiskach programistycznych.

 30
Author: gonz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-24 16:29:01

Problem polega na tym, że uwsgi nie wywołuje app.run(). Nazywa app(). Więc zamiast tego możesz to zrobić:

from flask import Flask
app = Flask(__name__)
app.debug = True
 20
Author: Rob Wouters,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-28 15:33:30

U mnie zadziałało dopiero po połączeniu dwóch powyższych odpowiedzi w ten sposób:

from flask import Flask
app = Flask(__name__)

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

app.debug = True
 0
Author: saitam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-19 20:44:32