2010-04-07 6 views
16

Qualcuno può spiegare la differenza tra apache mod_wsgi in modalità daemon e django fastcgi in modalità thread. Entrambi usano i thread per la concorrenza, penso. Supponiamo che io stia usando nginx come front-end per apache mod_wsgi.Distribuire Django (fastcgi, apache mod_wsgi, uwsgi, gunicorn)

UPDATE:

sto paragonando django costruito nel fastcgi (./ metodo manage.py = maxchildren filettati = 15) e mod_wsgi in modalità 'daemon' (WSGIDaemonProcess esempio fili = 15). Entrambi usano i thread e acquisiscono GIL, ho ragione?

UPDATAE 2:

Quindi, se entrambi sono simili, non v'è alcun beneficio di apache mod_wsgi contro FastCGI. Vedo tali pro di FastCGI:

  • non abbiamo bisogno apache
  • consumiamo meno RAM
  • ho notato che FastCGI ha minore in testa

UPDATAE 3:

Ora sono felice con nginx + uwsgi.

UPDATAE 4:

ora sono felice con nginx + gunicorn :)

risposta

10

Né è necessario utilizzare thread per essere in grado di gestire le richieste simultanee. Dipende da come li configuri. È possibile utilizzare più processi in cui ciascuno è singolo thread, se lo si desidera.

per più di fondo su modelli di processo/threading mod_wsgi vedere:

http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading

I modelli sono simili anche se che mod_wsgi gestisce gestione processo stesso. Cosa succede in FASTCGI per quanto riguarda la gestione dei processi dipende da quale meccanismo di hosting FASTCGI si sta utilizzando e non si dice cosa sia.

Un'altra differenza è che FASTCGI ha ancora bisogno di un bridge FASTCGI-WSGI separato come flup dove come mod_wsgi non ha bisogno di alcun tipo di bridge come interfaccia nativa di WSGI.

Infine, il processo FASTCGI è un exec/fork di qualche processo supervisore o server Web, dipendente dal meccanismo di hosting. In mod_wsgi i processi sono solo una fork del processo genitore Apache. In generale questo non importa troppo ma ha alcune implicazioni.

Ci sono altre differenze, ma sorgono di più perché mod_wsgi offre molte più funzionalità e configurabilità di un meccanismo di hosting FASTCGI.

In ogni caso, la domanda è un po 'vaga, puoi essere più specifico su ciò che vuoi sapere o il contrasto tra i due e perché? La risposta può quindi essere meglio mirata.

+0

Sto confrontando django integrato in fastcgi (./ manage.py method = threaded maxchildren = 15) e mod_wsgi nella modalità 'daemon' (WSGIDaemonProcess example threads = 15). –

+0

Sì, entrambi si affidano al multithreading per gestire richieste simultanee. Il GIL è utilizzato anche se un singolo server WSGI con thread, non è possibile evitarlo facilmente senza ricompilare il codice sorgente Python e disabilitare il supporto del threading. Fatelo e non potete usare mod_wsgi poiché non supporta Python che ha disabilitato il threading. –

+0

Cosa intendi con "il GIL viene utilizzato anche se un singolo server WSGI con thread"? È usato quando configuriamo mod_wsgi per fork i processi invece dei thread? –