2012-04-28 6 views
29

Llamo al app.run(debug=True) en el archivo de mi matraz.Flask debug = True no funciona al pasar por uWSGI

y tengo que desplegó con uWSGI y Nginx (Seguí these instructions)

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

Pero cuando me sale un error, no tengo ninguna información de depuración en el navegador o en el registro de uWSGI.

¿Alguna idea?

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

¿Se puede publicar 'nombre_archivo_del_mozo.py'? –

Respuesta

23

Según the Flask mailing list no puede utilizar la opción de depuración de Frasco con uWSGI, porque no es para ser utilizado en un entorno de bifurcación.

Ves 502 porque frasco/werkzeug no envía datos al servidor web, voluntad para nginx devuelve un 502.

Puede emular el depurador utilizando --catch-excepciones opción en uWSGI (pero por favor no lo haga en producción)

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

+0

¡Eres el hombre! Todavía no está formateado como lo fue sin uWSGI, pero ahora obtengo el error. ¡Muchas gracias! – Flaviu

+0

Sí, pero también vea el comentario de gonz, a continuación. :) –

19

El problema es uwsgi no llama app.run(). Llama al app(). Así que en lugar usted puede hacer esto:

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

Gracias. Eso ayuda. Ahora si tengo un error de sintaxis, redirige a la página de error nx de static 50x.html. ¿Cómo puedo obtener un matraz para manejar eso? – Flaviu

25

Esta pregunta es viejo, pero voy a publicar esto para futuras referencias ...

Si desea obtener la página de error werkzeug trabajar con uwsgi, trate de usar DebuggedApplication middleware de werkzeug:

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.

+4

Esto funcionó para mí, las otras respuestas no. Gracias. –

+2

Para que funcione el indicador del depurador, debe usar un solo trabajador en uwsgi (--workers 1, --threads 4) – GaretJax

Cuestiones relacionadas