Frage

Ich laufe derzeit ein Django-Projekt auf Webserver meiner Schule mit FCGI. Ich habe die mehrere Führer folgen, die eine virtuelle lokale Python-Umgebung empfiehlt die Installation und es hat sehr gut funktioniert. Das Problem tritt nur ich hatte, war, dass „rührend“ meine fcgi-Datei erneut zu laden Quelle-Dateien war nicht genug, aber stattdessen hatte ich die Python-Service via SSH zu töten. Dies, weil mod_fcgid verwendet.

Allerdings hat der Administrator nicht, dass es eine gute Idee war, dass ich meinen eigenen lokalen Python lief. Er hielt es für besser, wenn ich sagte ihm, genau das, was auf root installieren Module, die wirklich ein nettes Service.

Aber dies zu tun, ich kann nicht mehr Python töten, da es unter root ist (wenn auch unmoralisch, wie ich bin, habe ich auf jeden Fall versucht). Die Administratoren Empfehlung war, dass ich versuchen sollte, das fcgi Skript reload selbst durch Überprüfung Zeitstempel zu machen. Ich habe versucht, Dokumentation zu finden, wie dies zu tun, aber den Fonds sehr wenig, und da ich einen absoluten Anfänger bin habe ich keine Ahnung, was funktionieren würde. Jedermann hat Erfahrung mit der Leitung Python / Django unter mod_fcgid oder Tipps, wo Ähnliche Führer finden / Dokumentation?

War es hilfreich?

Lösung

Hier ist, was ich tun würde:

## top of my .fcgi script
import sys, time
original_modules = sys.modules.copy()

## in a separate thread
old_ctime = os.path.getctime("mymodule.py")
while True:
    time.sleep(10)
    new_ctime = os.path.getctime("mymodule.py")
    if new_ctime > old_ctime:
        sys.modules = original_modules # reset all imports
        import mymodule
        mymodule.dofcgi()

gewährt dies Drop-in nicht perfekt (Sie mess w / das Gewinde haben könnte), aber es sollte Ihnen eine allgemeine Vorstellung davon, wie man „reload“ ein Modul geben vollständig.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top