2010-04-07 7 views
16

Kann jemand den Unterschied zwischen Apache mod_wsgi im Daemon-Modus erklären und fastcgi in Gewinde Modus django. Beide benutzen Threads für Parallelität, denke ich. der Annahme, dass ich nginx als Front-End für Apache mod_wsgi bin mit.Bereitstellen von Django (fastcgi, Apache mod_wsgi, uwsgi, gunicorn)

UPDATE:

I django in fastcgi (./ manage.py method = Gewinde maxchildren = 15) und in mod_wsgi 'Daemon' -Modus (WSGIDaemonProcess Beispiel threads = 15) aufgebaut bin zu vergleichen. Sie benutzen beide Threads und erwerben GIL, habe ich recht?

UPDATAE 2:

Also, wenn sie beide ähnlich sind, gibt es irgendwelche Vorteile von Apache mod_wsgi gegen fastcgi. Ich sehe solche Profis von fastcgi:

  • wir nicht brauchen, Apache
  • wir weniger RAM verbrauchen
  • Ich bemerkte, dass fastcgi hat weniger Overhead

UPDATAE 3:

ich bin jetzt glücklich mit nginx + uwsgi.

UPDATAE 4:

Ich bin jetzt glücklich mit nginx + gunicorn :)

Antwort

10

Weder haben Threads verwenden zu können, gleichzeitige Anfragen bearbeiten. Es hängt davon ab, wie Sie sie konfigurieren. Sie können mehrere Prozesse verwenden, wobei jeder einzelne Threads enthält, wenn Sie möchten.

Weitere Hintergrundinformationen über mod_wsgi Prozess/Threading-Modelle zu sehen:

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

Die Modelle sind ähnlich, wenn auch diese mod_wsgi behandelt Prozessmanagement selbst. Was in FASTCGI in Bezug auf das Prozessmanagement passiert, hängt davon ab, welchen FASTCGI-Hostingansatz Sie verwenden, und Sie sagen nicht, was das ist.

Ein weiterer Unterschied besteht darin, dass FastCGI noch eine separate FastCGI zu WSGI Brücke wie flup benötigt, wo als mod_wsgi keine Art von Brücke braucht als WSGI Schnittstelle nativ implementiert.

Schließlich FastCGI-Prozess sind eine exec/Gabel einiger Überwachungsprozeß oder der Web-Server, abhängig von Mechanismus Hosting. In mod_wsgi sind die Prozesse nur eine Verzweigung des übergeordneten Apache-Prozesses. Im Allgemeinen ist das nicht so wichtig, hat aber einige Implikationen.

Es gibt andere Unterschiede, aber sie entstehen mehr, weil mod_wsgi viel mehr Funktionalität und Konfigurierbarkeit als ein FASTCGI-Hosting-Mechanismus bietet.

Wie dem auch sei, die Frage ist ein bisschen vage, können Sie das konkretisieren, was es ist, Sie wollen zwischen den beiden und wissen, warum oder Gegensatz? Antwort kann dann vielleicht besser abgezielt werden.

+0

ich django in fastcgi gebaut Vergleichen (./ verwalten.py method = threaded maxchildren = 15) und mod_wsgi im 'daemon' Modus (WSGIDaemonProcess Beispiel threads = 15). –

+0

Ja, beide verwenden Multithreading, um gleichzeitige Anfragen zu bearbeiten. Die GIL wird auch dann verwendet, wenn ein WSGI-Server mit einem einzelnen Thread nicht ohne weiteres vermieden werden kann, ohne den Python-Quellcode neu zu kompilieren und die Threading-Unterstützung zu deaktivieren. Tun Sie das aber, und Sie können mod_wsgi nicht verwenden, da es Python nicht unterstützt, bei dem das Threading deaktiviert ist. –

+0

Was meinst du "die GIL wird verwendet, auch wenn ein Single-Thread-WSGI-Server"? Wird es verwendet, wenn wir mod_wsgi so konfigurieren, dass Prozesse statt Threads forciert werden? –