Question

Je suis en cours d'exécution d'un projet Django sur serveur Web de mon école avec FCGI. Je l'ai suivi les guides multiples qui vous recommande d'installer un environnement Python local virtuel et il est très bien passé. La seule question que j'avais était que « toucher » mon fcgi fichier aux fichiers source-reload ne suffisait pas, mais je dû tuer le service à la place python via SSH. Parce mod_fcgid est utilisé.

Cependant, l'administrateur ne pense pas que ce soit une bonne idée que je courais mon python local. Il pensait mieux si je lui ai dit ce que les modules à installer sur la racine, ce qui était un très bon service vraiment.

Mais faire cela, je ne peux plus tuer python car il est sous la racine (si immoral que je suis, j'ai vraiment essayé). La recommandation admins était que je devrais essayer aussi faire le reload script fcgi lui-même en vérifiant l'horodatage. J'ai essayé de trouver de la documentation sur la façon de faire, mais très peu de fonds et depuis que je suis un débutant absolu je ne sais pas ce qui fonctionnerait. Tout le monde a l'expérience en cours d'exécution python / django sous mod_fcgid ou des conseils sur où trouver des guides / documentation?

Était-ce utile?

La solution

voici ce que je ferais:

## 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()

est accordée ce sans rendez-vous parfait (vous devrez peut gâcher w / filetage) mais il ne devrait vous donner une idée générale de la façon de « reload » un module complètement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top