2012-02-25 23 views
48

Al construir un servicio de Flask en Python y configurar el modo de depuración, el servicio de Frasco se iniciará dos veces. Cuando la inicialización carga cachés y similares, esto puede llevar un tiempo. Tener que hacer esto dos veces es molesto cuando se está en modo de desarrollo (depuración). Cuando la depuración está desactivada, el servicio Flask solo se inicia una vez.¿Cómo evitar que Flask se inicialice dos veces en el modo de depuración?

¿Cómo evitar que el Flask se inicialice dos veces en modo de depuración?

Respuesta

75

Lo más sencillo que hacer aquí habría que añadir use_reloader=False a su llamada a app.run - es decir: app.run(debug=True, use_reloader=False)

Como alternativa, se puede comprobar la valor de WERKZEUG_RUN_MAIN en el medio ambiente:

if os.environ.get("WERKZEUG_RUN_MAIN") == "true": 
    # The reloader has already run - do what you want to do here 

Sin embargo, la condi ción es un poco más complicado cuando se desea el comportamiento suceda cualquier momento excepto en el proceso de carga:

if not app.debug or os.environ.get("WERKZEUG_RUN_MAIN") == "true": 
    # The app is not in debug mode or we are in the reloaded process 
+0

¿Cómo puede seguir usando el recargador pero tiene ciertas cosas inicializadas solo una vez? – osa

+0

@osa - Agregué una breve explicación de una alternativa que podría permitirle usar el recargador –

+1

'use_reloader = False' funcionó perfectamente para mí. – tmthyjames

17

se puede utilizar el before_first_request gancho:

@app.before_first_request 
def initialize(): 
    print "Called only once, when the first request comes in" 
+2

Gracias Alex, pero si estoy haciendo el calentamiento caché o cosas poblamiento pre como un 'clasificador' será este llegar antes de la primera solicitud, haciendo que la primera solicitud sea lenta o al iniciar el servicio del matraz. –

+4

Votación reducida. Cuando la aplicación se vuelve a cargar, se llamará a 'before_first_request' después de la primera solicitud que sigue. – osa

Cuestiones relacionadas