Comment empêcher Flask d'initialiser deux fois en mode Debug?

lors de la construction d'un service Flask en Python et de la mise en mode déboguage, le service Flask s'initialise deux fois. Lorsque l'initialisation charge des caches et autres, cela peut prendre un certain temps. Avoir à le faire deux fois est ennuyeux en mode développement (debug). Lorsque le débogage est désactivé, le service de flasque n'initialise qu'une seule fois.

comment empêcher Flask de s'initialiser deux fois en mode débogage?

61
demandé sur Smi 2012-02-26 03:35:01

2 réponses

la chose La plus simple à faire ici serait d'ajouter use_reloader=False à ton appel app.run - qui est: app.run(debug=True, use_reloader=False)

Alternativement, vous pouvez vérifier la valeur de WERKZEUG_RUN_MAIN dans l'environnement:

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

cependant, la condition est un peu plus alambiquée quand vous voulez que le comportement se produise à tout moment sauf dans le processus de chargement:

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
95
répondu Sean Vieira 2014-10-04 22:55:13

vous pouvez utiliser le before_first_request crochet:

@app.before_first_request
def initialize():
    print "Called only once, when the first request comes in"
14
répondu Alex Morega 2018-07-17 11:53:13