Un modo veramente semplice è CGI (insieme a un server Web regolare e utilizzando wsgiref.handlers.CGIHandler
). Terribile per le prestazioni su un server di produzione, ma ottimo per lo sviluppo. È possibile scrivere un singolo script che funzioni sia come mod_wsgi WSGIScriptAlias (che espone un oggetto application
), sia come mod_cgi ScriptAlias (chiamando wsgiref
quando __name__=='__main__'
).
Molti ambienti WSGI hanno un modo per ricaricare lo script di base, ad esempio WSGIScriptReloading
di mod_wsgi, che è attivo per impostazione predefinita. Sfortunatamente, è probabile che tu stia inserendo gran parte del codice nei moduli, il che non è così facile da ricaricare. In mod_wsgi puoi anche farlo inviando un SIGINT per eseguire un ricaricamento quando sei in modalità demone. Sfortunatamente devi ancora annusare ogni modulo che stai usando per gli aggiornamenti di mtime per sapere se devi ricaricare. E non funziona in modalità incorporata.
Un approccio disordinato ma fattibile è quello di annusare tutti i moduli che fanno parte dell'applicazione, e se qualcuno è stato aggiornato dall'ultimo controllo, ricaricarli tutti.Devi ricaricarli in una volta, rimuovendoli tutti dalla ricerca sys.modules
(rimuovi anche le voci valutate None
mentre sei lì, per evitare problemi relativi alla ricerca delle importazioni), in modo da assicurarti che non mantengano i riferimenti incrociati a le vecchie versioni di se stessi. E ovviamente non devono lasciare altri riferimenti a se stessi al di fuori della vostra applicazione. È possibile vedere un esempio di questo in azione nella classe ModuleUpdater
here.
(Questo software non è pronto per il rilascio, ma ha fornito il modulo di ricarica per le mie app WSGI per alcuni anni e sembra stabile. L'idea è di mettere tutta l'app WSGI in una classe di applicazione in un pacchetto , che è possibile importare da un singolo script punto di ingresso WSGI/CGI/a riga di comando, si include la configurazione distribuzione in quello script)
Apache non ha l'overhead che molti sostengono di avere. Se lo configuri e lo usi correttamente, che la maggior parte delle persone non lo fa, non è così male come la gente lo fa. Sfortunatamente le persone che non conoscono meglio continuano a diffondere questo mito sul fatto che Apache sia gonfia. :-( –
Graham, per favore non fraintendermi, mi piace molto Apache e (penso) Sono bravo a configurarlo Sono totalmente d'accordo sulla maggior parte degli apache-odiatori sono persone che non sanno come farlo funzionare. Comunque le mie intenzioni qui sono totalmente diverse Voglio fornire agli altri sviluppatori del mio team un semplice file requirements.txt per farle funzionare e POI distribuire in mod_wsgi, in questo modo le persone non devono imparare e configurare la propria istanza di sviluppo Apache. –
Sto cercando la stessa soluzione dell'OP. FWIW: il mio problema con Apache è che non sta funzionando bene con diversi moduli importati - come Shapely. Voglio continuare con Dev della mia app wsgi (con ricaricamento) mentre io Esegui il debug del problema Apache separatamente. –