python wsgi flask

python - flask logging



Flask debug=True no funciona al pasar por uWSGI (4)

Llamo a app.run(debug=True) en mi archivo del matraz.

y lo tengo implementado con uWSGI y nginx (seguí estas instrucciones )

uwsgi -s /tmp/uwsgi.sock -w flask_file_name:app -H /path/to/virtual/env --chmod-socket 666

Pero cuando recibo un error, no obtengo ninguna información de depuración en el navegador o en el registro de uWSGI.

¿Algunas ideas?

nombre_archivo_frasco.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()


El problema es que uwsgi no llama a app.run() . Llama a la app() . Entonces, en cambio, puedes hacer esto:

from flask import Flask app = Flask(__name__) app.debug = True


Esta pregunta es antigua, pero la publicaré para futuras referencias ...

Si desea que la página de error de werkzeug funcione con uwsgi, intente utilizar el middleware DebuggedApplication de DebuggedApplication :

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

Eso debería ser el truco pero NO OLVIDES hacer esto SOLAMENTE en entornos de desarrollo.


Para mí solo funcionó después de combinar las dos respuestas anteriores de esta manera:

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


Según la lista de correo de Flask, no puede usar la opción de depuración de Flask con uWSGI , ya que no se debe usar en un entorno de bifurcación.

Usted ve 502 porque el matraz / werkzeug no envía datos al servidor web, por lo que nginx devolverá un 502.

Puede emular el depurador con la opción --catch-exceptions en uWSGI (pero no lo haga en producción)

Entonces, la razón por la que estás viendo 502 será por eso. La solución sería agregar --catch-exceptions de uWSGI a uWSGI en la ejecución.