Domanda

Sono attualmente in esecuzione un progetto Django sul web server della mia scuola con fcgi. Ho fatto seguire le molteplici guide che consiglia di installare un ambiente virtuale locale, Python e ha funzionato alla grande. L'unico problema che avevo era che il mio fcgi-file "toccare" per ricaricare source-files non era sufficiente, ma invece ho dovuto uccidere il servizio pitone via SSH. Questo perché mod_fcgid viene utilizzato.

Tuttavia, l'amministratore non pensava che fosse una grande idea che mi sono imbattuto il mio pitone locale. Ha pensato che meglio se ho solo detto quello che i moduli da installare su radice, che è stato un bel servizio abbastanza davvero.

Ma facendo questo, non riesco più a uccidere pitone dal momento che è sotto root (anche se immorale come lo sono io, ho sicuramente provato). La raccomandazione amministratori era che avrei dovuto provare anche rendere lo script fcgi ricaricarsi controllando timestamp. Ho cercato di trovare la documentazione su come fare questo, ma di fondi molto poco e siccome io sono un principiante assoluto non ho idea di quello che avrebbe funzionato. Qualcuno ha esperienza in esecuzione Python / Django sotto mod_fcgid o suggerimenti su dove trovare guide relativi / documentazione?

È stato utile?

Soluzione

Ecco quello che vorrei fare:

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

concesso questo non è drop-in perfetto (si potrebbe avere a pasticciare w / la filettatura), ma dovrebbe darvi un'idea generale di come "ricarica" ??di un modulo completamente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top