Maison >développement back-end >Tutoriel Python >Comment puis-je recharger efficacement les modules Python pour les mises à niveau sans serveur sans redémarrer le serveur ?
Lors de l'exécution de serveurs Python étendus, le rechargement des modules permet des mises à niveau de service sans redémarrage du serveur. L'un des problèmes courants pour y parvenir est de décharger efficacement l'ancien module avant de le recharger.
Python fournit une fonction intégrée, importlib.reload() , spécialement conçu pour le rechargement de modules. C'est une solution efficace, en particulier pour Python 3.4 et supérieur.
from importlib import reload # Python 3.4+ import foo while True: # Do some operations. if is_changed(foo): foo = reload(foo)
Auparavant, dans Python 2, le rechargement était intégré. Pour Python 3, il a été déplacé vers le module imp. Cependant, dans la version 3.4, imp était obsolète au profit de importlib. Par conséquent, lorsque vous ciblez Python 3 ou version ultérieure, faites référence au module approprié lors de l'appel de reload ou importez-le.
Divers serveurs Web, comme le serveur de développement de Django, utilisent cette méthode pour activer la dynamique mises à jour sans redémarrage du processus serveur. Il est impératif de noter que seul le code au niveau du module est réexécuté, tandis que la fonction init des modules d'extension reste intacte. Sachez également que les anciens objets ne seront récupérés que lorsque leur nombre de références tombera à zéro.
Dans votre scénario spécifique, si la classe Foo est définie dans le module foo, vous devrez recréer les objets Foo après le rechargement. le module.
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!