Heim >Backend-Entwicklung >Python-Tutorial >Wie lade ich ein Python-Modul neu, ohne den Server neu zu starten?

Wie lade ich ein Python-Modul neu, ohne den Server neu zu starten?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-27 13:50:14389Durchsuche

How to Reload a Python Module Without Restarting the Server?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn