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.