Heim >Backend-Entwicklung >Python-Tutorial >Wie lade ich ein Python-Modul neu, ohne den Server neu zu starten?
Neuladen von Python-Modulen für Server-Upgrades
Die Wartung lang laufender Python-Server kann Upgrades erfordern, ohne den gesamten Server neu zu starten. Ein Ansatz hierfür besteht darin, bestimmte Module zu entladen und neu zu laden.
Frage: Wie entlade ich ein Python-Modul und lade es neu?
So entladen Sie ein zuvor importiertes Modul und laden es neu aktualisierte Version ohne Neustart des Servers:
Antwort: Verwenden Sie importlib.reload() Funktion
Für Python 3.4 verwenden Sie die Funktion importlib.reload():
from importlib import reload import foo while True: # Perform actions if is_changed(foo): foo = reload(foo)
Für Python 2 verwenden Sie die Reload-Funktion des imp-Moduls.
Referenzen erneut binden
Nach dem Neuladen eines Moduls werden seine Objekte angezeigt neu erstellt, externe Referenzen müssen jedoch aktualisiert werden. Wenn sich im bereitgestellten Beispiel Foo-Objekte im foo-Modul befinden, müssen Sie diese neu erstellen.
Diese Technik wird häufig für das Hot-Reloading im Django-Entwicklungsserver verwendet, sodass Änderungen im Code ohne Neustart berücksichtigt werden können dem Server.
Details zum Neuladen des Python-Moduls
Importlib.reload() Kompiliert den Code des Moduls neu, führt den Code auf Modulebene erneut aus und aktualisiert das Wörterbuch des Moduls mit neuen Objekten. Alte Objekte werden durch Garbage Collection erfasst, wenn die Referenzanzahl auf Null sinkt.
Ungebundene Referenzen auf alte Objekte außerhalb des Moduls müssen bei Bedarf manuell aktualisiert werden.
Das obige ist der detaillierte Inhalt vonWie lade ich ein Python-Modul neu, ohne den Server neu zu starten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!