python - meaning - ¿Cómo evitar que Flask se inicialice dos veces en el modo de depuración?
flask wikipedia (2)
Puedes usar el gancho before_first_request
:
@app.before_first_request
def initialize():
print "Called only once, when the first request comes in"
Al crear un servicio Flask en Python y al configurar el modo de depuración, el servicio Flask 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?
Lo más simple de hacer aquí sería agregar use_reloader=False
a su llamada a app.run
, es decir: app.run(debug=True, use_reloader=False)
Alternativamente, puede verificar el valor de WERKZEUG_RUN_MAIN
en el entorno:
if os.environ.get("WERKZEUG_RUN_MAIN") == "true":
# The reloader has already run - do what you want to do here
Sin embargo, la condición es un poco más intrincada cuando quieres que el comportamiento ocurra en 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