2010-04-07 12 views
16

¿Alguien puede explicar la diferencia entre apache mod_wsgi en modo daemon y django fastcgi en modo enhebrado? Ambos usan hilos para concurrencia, creo. Supongamos que estoy usando nginx como interfaz para apache mod_wsgi.Implementando Django (fastcgi, apache mod_wsgi, uwsgi, gunicornio)

UPDATE:

estoy comparando django construido en fastcgi (./ método manage.py = maxchildren roscados = 15) y en el modo de mod_wsgi 'daemon' (hilos ejemplo WSGIDaemonProcess = 15). Ambos usan hilos y adquieren GIL, ¿estoy en lo cierto?

UPDATAE 2:

Así que si ambos son similares, ¿hay algún beneficio de Apache mod_wsgi contra fastcgi. Veo esas ventajas de fastcgi:

  • que no necesitamos Apache
  • consumimos menos RAM
  • Noté que fastcgi tiene menor sobrecarga

UPDATAE 3:

Ahora estoy contento con nginx + uwsgi.

UPDATAE 4:

ahora estoy feliz con nginx + gunicorn :)

Respuesta

10

Ni tener que utilizar hilos para ser capaz de manejar peticiones concurrentes. Depende de cómo los configure. Puede usar múltiples procesos donde cada uno tiene un solo subproceso si lo desea.

Para mayor información sobre los modelos de proceso/enhebrado mod_wsgi ver:

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

Los modelos son similares aunque mod_wsgi que se maneja la gestión de procesos. Lo que sucede en FASTCGI en cuanto a la gestión de procesos depende del mecanismo de alojamiento FASTCGI que esté utilizando y no dice qué es eso.

Otra diferencia es que FASTCGI aún necesita un puente separado FASTCGI a WSGI como flup donde mod_wsgi no necesita ningún tipo de puente ya que implementa la interfaz WSGI de forma nativa.

Finalmente, el proceso FASTCGI es un exec/fork de algún proceso de supervisor o servidor web, dependiendo del mecanismo de alojamiento. En mod_wsgi, los procesos son solo un fork del proceso principal de Apache. En general, esto no importa demasiado, pero tiene algunas implicaciones.

Existen otras diferencias, pero surgen más porque mod_wsgi ofrece mucha más funcionalidad y capacidad de configuración que un mecanismo de alojamiento FASTCGI.

De todos modos, la pregunta es un poco vaga, ¿puedes ser más específico acerca de qué es lo que quieres saber o contrastar entre los dos y por qué? La respuesta puede quizás ser mejor dirigida.

+0

Estoy comparando django construido en fastcgi (./ manage.método py = threaded maxchildren = 15) y mod_wsgi en modo 'daemon' (WSGIDaemonProcess ejemplo threads = 15). –

+0

Sí, ambos confían en el multihilo para manejar solicitudes simultáneas. El GIL se usa incluso si se trata de un servidor WSGI de subproceso único, no se puede evitar fácilmente sin volver a compilar el código fuente de Python y deshabilitar el soporte de subprocesos. Sin embargo, hazlo y no puedes usar mod_wsgi ya que no es compatible con Python que tiene el subprocesamiento deshabilitado. –

+0

¿Qué quiere decir con "GIL se usa incluso si se trata de un único servidor WSGI con subprocesos"? ¿Se usa cuando configuramos mod_wsgi para fork procesos en lugar de hilos? –

Cuestiones relacionadas