Le serveur de développement Flask s'exécute deux fois : dévoiler la raison
Le serveur de développement Flask gère le redémarrage de votre application chaque fois que des modifications sont apportées à votre code . Cette fonctionnalité est fournie par la fonction restart_with_reloader() de la bibliothèque Werkzeug.
Cette fonction génère un processus enfant, exécutant à nouveau votre script à l'aide de subprocess.call(). Par conséquent, le script d'origine et le processus enfant impriment le message de redémarrage une fois chacun, ce qui entraîne le comportement de double impression observé.
Désactivez le rechargement
Pour éliminer ce comportement , désactivez le rechargeur en définissant use_reloader sur False :
Vous pouvez également utiliser la commande flask run avec le --no-reload flag :
Détecter le processus de rechargement
Utilisez la fonction werkzeug.serving.is_running_from_reloader() pour détecter le processus enfant :
Utilisez @app.before_first_request Décorateur
Si vous devez définir des variables globales de module, pensez à utiliser le décorateur @app.before_first_request :
Ce décorateur exécute la fonction une fois après chaque rechargement, lors de la première requête est fabriqué.
Remarque :
En grandeur nature Serveurs WSGI utilisant des forks ou des sous-processus pour gérer les requêtes, les gestionnaires before_first_request peuvent être invoqués pour chaque sous-processus.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!