Rechargement des modules Python pour les mises à niveau du serveur
La maintenance des serveurs Python de longue durée peut nécessiter des mises à niveau sans redémarrer l'ensemble du serveur. Une approche pour cela consiste à décharger et recharger des modules spécifiques.
Question : Comment décharger et recharger un module Python ?
Pour décharger un module précédemment importé et charger son version mise à jour sans redémarrer le serveur :
Réponse : utilisez importlib.reload() Fonction
Pour Python 3.4, utilisez la fonction importlib.reload() :
from importlib import reload import foo while True: # Perform actions if is_changed(foo): foo = reload(foo)
Pour Python 2, utilisez la fonction de rechargement du module imp.
Reliaison des références
Après le rechargement d'un module, ses objets seront recréés, mais les références externes devront être mises à jour. Dans l'exemple fourni, si les objets Foo résident dans le module foo, vous devrez les recréer.
Cette technique est couramment utilisée pour le rechargement à chaud dans le serveur de développement de Django, permettant de refléter les modifications du code sans redémarrer. le serveur.
Détails du rechargement du module Python
Importlib.reload() recompile le code du module, réexécute le code au niveau du module et met à jour le dictionnaire du module avec de nouveaux objets. Les anciens objets seront récupérés lorsque le nombre de références tombera à zéro.
Les références non liées aux anciens objets en dehors du module devront être mises à jour manuellement si vous le souhaitez.
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!