2009-12-22 12 views
5

Quindi sto cercando di fare più sviluppo web in python, e ho scelto cherrypy, ospitato da lighttpd w/fastcgi. Ma la mia domanda è molto basilare: perché devo riavviare lighttpd (o apache) ogni volta che cambio il mio codice applicativo, o il codice per una libreria sottostante?fastcgi, cherrypy e python

Mi rendo conto che questa domanda si estende da una comprensione di base mis (cioè scarsa) del modello fastcgi, quindi sono aperto a qualsiasi istruzione qui, ma sono abituato a cambiare semplicemente un file PHP e questo viene mostrato, rispetto dover rimbalzare il server web.

Ogni elucidazione/utile presa in giro apprezzata.

+1

"rimbalzo"? Significa "riavviare" o qualcosa del genere? Di solito nei computer "rimbalzo" si riferisce a un tentativo di recuperare qualcosa che viene rifiutato come errore o concetti simili. –

+0

Sì, rimbalza, come in per riavviare il processo. Di solito nella mia esperienza la gente parla sempre di rimbalzare Apache, Tomcat, ecc. Ecc. – Wells

+0

Correlati: http://stackoverflow.com/questions/1711483/python-web-hosting-why-are-server-restarts-necessable – miku

risposta

8

Questo a causa delle prestazioni. Per lo sviluppo, l'autoregamento automatico è utile. Ma per la produzione, si non si desidera eseguire il caricamento automatico. Questo è in realtà un collo di bottiglia di dimensioni decenti, per esempio PHP. Ogni volta che accedi a una pagina Web PHP, il server deve analizzare e caricare ogni pagina da zero. Con Python, lo script è già caricato e in esecuzione dopo il primo accesso.

Come è stato sottolineato, CherryPy ha un'impostazione autoregolante. Consiglio di utilizzare il server integrato CherryPy per lo sviluppo e l'utilizzo di lighttpd per la produzione. Questo probabilmente ti farà risparmiare un po 'di tempo. Il tutorial mostra come farlo.

+0

Grazie - Sto notando un sacco di commenti su un googling che il flup non sembra funzionare quando l'auto ricarica di Cherrypy c'è qualche idea lì? Suppongo che potrei usare un modulo WSGI non-flup. – Wells

+2

Ricorda che CherryPy è in realtà due componenti: un framework e un server. Se stai usando lighttpd, allora stai semplicemente usando il framework. Se si utilizza il server in fase di sviluppo, non è necessario preoccuparsi di ciò poiché eseguirà automaticamente il caricamento automatico. Una volta passato alla produzione, * quindi * passerei a lighttpd. –

0

Dal punto di vista del visualizzatore del software di sistema: Tutto dipende da come i meta-dati sul processo del server sono organizzati all'interno del demone (lighttpd o fcgi). Alcuni programmi sono progettati per l'inizializzazione solo una volta - MOSTAMENTE ciò consente un modello di programmazione interno molto più semplice e migliore.

Spesso è molto difficile programmare un processo del server ricaricare i dati di configurazione in modo semplice. Potrebbe essere necessario introdurre blocchi e oggetti evento esterni (segnali in UNIX). Quando è possibile sincronizzare le strutture dati in base alla progettazione, ovvero inizializzando solo una volta ... perché complicare le cose rendendo il modello di dati modificabile più volte?