Maison >développement back-end >Tutoriel Python >Comment exécuter le code d'initialisation une seule fois lors du démarrage du serveur Django ?

Comment exécuter le code d'initialisation une seule fois lors du démarrage du serveur Django ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-03 19:52:03783parcourir

How to Execute Initialization Code Only Once During Django Server Startup?

Exécution du code d'initialisation dans Django au démarrage

Dans Django, exécuter le code une seule fois au démarrage peut être une exigence courante. Explorons une solution qui garantit que le code est exécuté uniquement lors du démarrage initial du serveur, et non lors des requêtes ultérieures.

Initialement, la solution proposée dans la question liée a généré deux fois le message « Bonjour tout le monde » dans le terminal. Le problème réside dans l'utilisation de l'exception MiddlewareNotUsed pour mettre fin à l'exécution du middleware.

À partir de Django 1.7, un hook dédié a été introduit pour résoudre ce problème. En remplaçant la méthode ready dans la classe AppConfig de votre application, vous pouvez spécifier du code de démarrage uniquement. Cette approche est plus propre et plus explicite que l'utilisation d'un middleware.

Pour les versions de Django antérieures à 1.7, placer le code de démarrage dans le fichier __init__.py de l'une de vos INSTALLED_APPS s'est avéré efficace. Ce code sera exécuté lors du premier chargement de l'application, garantissant qu'elle ne s'exécute qu'une seule fois.

Voici un exemple de placement de code pour cette approche :

# myapp/__init__.py
import your_module

your_module.initializer()

Veuillez noter que lorsque à l'aide de la commande ./manage.py runserver, le code d'initialisation peut être exécuté deux fois en raison des processus de validation internes du serveur. Cependant, dans des scénarios de déploiement typiques ou lors de rechargements automatiques par runserver, le code ne s'exécutera qu'une seule fois.

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!

Déclaration:
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