Maison > développement back-end > Tutoriel Python > Pourquoi mon serveur de développement Flask affiche-t-il un message de double redémarrage ?

Pourquoi mon serveur de développement Flask affiche-t-il un message de double redémarrage ?

Barbara Streisand
Libérer: 2024-12-07 15:44:11
original
639 Les gens l'ont consulté

Why Does My Flask Dev Server Show a Double Restart Message?

Double redémarrage de l'impression dans Flask Dev Server

Lors de l'exécution d'un serveur de développement de site Web à l'aide de Flask, les utilisateurs ont remarqué un comportement anormal lors du redémarrage du serveur Le message apparaît deux fois au lieu d'une. Pour comprendre la raison derrière cela, examinons les mécanismes du serveur de développement de Flask.

Flask utilise Werkzeug, une bibliothèque d'utilitaires WSGI, pour lancer le serveur de développement via la méthode app.run(). Werkzeug utilise une technique appelée « rechargement » pour redémarrer automatiquement le serveur lors de la détection de modifications dans le code. Le processus de rechargement implique la création d'un processus enfant qui exécute à nouveau votre script Flask à l'aide de subprocess.call().

Ce processus enfant assume le même code que le processus parent, conduisant à la double exécution du message de redémarrage. Pour éliminer ce comportement, définissez le paramètre use_reloader de app.run() sur False. Vous pouvez également désactiver le rechargement pendant l'exécution en ligne de commande de Flask :

FLASK_DEBUG=1 flask run --no-reload
Copier après la connexion

Pour les scénarios avancés où la détection de la présence du processus enfant de rechargement est cruciale, utilisez la fonction is_running_from_reloader() de Werkzeug. Cependant, il est conseillé d'utiliser le décorateur @app.before_first_request pour initialiser les modules globaux, garantissant une seule exécution après chaque rechargement.

@app.before_first_request
def before_first_request():
    print(f"########### Restarted, first request @ {datetime.utcnow()} ############")
Copier après la connexion

Notez que les gestionnaires before_first_request peuvent être invoqués pour chaque nouveau sous-processus dans WSGI à grande échelle. des serveurs qui utilisent du forking ou de nouveaux 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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal