python apache nginx mod-wsgi

python - wsgi apache



En producción, Apache+mod_wsgi o Nginx+mod_wsgi? (4)

El autor de nginx mod_wsgi explica algunas diferencias con Apache mod_wsgi en este mensaje de la lista de correo .

¿Qué usar para una aplicación de WSGI python mediana a grande, Apache + mod_wsgi o Nginx + mod_wsgi?

¿Qué combinación necesitará más memoria y tiempo de CPU?
¿Cuál es más rápido?
¿Cuál es conocido por ser más estable que el otro?

También estoy pensando en usar el servidor WSGI de CherryPy pero escuché que no es muy adecuado para una aplicación de carga muy alta, ¿qué sabes de esto?

Nota : No utilicé Python Web Framework, simplemente escribí todo desde cero.
Nota '' : Otras sugerencias también son bienvenidas.


La principal diferencia es que nginx está diseñado para manejar grandes cantidades de conexiones en un espacio de memoria mucho más pequeño. Esto lo hace muy adecuado para aplicaciones que realizan conexiones tipo cometa que pueden tener muchas conexiones abiertas inactivas. Esto también le da una huella de memoria bastante más pequeña.

Desde una perspectiva de rendimiento crudo, nginx es más rápido, pero no tanto más rápido que yo lo incluiría como un factor determinante.

Apache tiene la ventaja en el área de módulos disponibles, y el hecho de que es bastante estándar. Cualquier host web con el que vaya tendrá instalado, y la mayoría de los técnicos estarán muy familiarizados con él.

Además, si usas mod_wsgi, es tu servidor wsgi así que ni siquiera necesitas cherrypy.

Aparte de eso, el mejor consejo que puedo dar es intentar configurar tu aplicación en ambos y realizar una evaluación comparativa, ya que no importa lo que alguien te diga, tu millaje puede variar.


Para nginx / mod_wsgi, asegúrese de leer:

http://blog.dscpl.com.au/2009/05/blocking-requests-and-nginx-version-of.html

Debido a que nginx es un sistema impulsado por eventos debajo, tiene características de comportamiento que son perjudiciales para las aplicaciones de bloqueo, como es el caso de las aplicaciones basadas en WSGI. El peor de los casos es que con la configuración nginx de multiproceso, puede ver que las solicitudes de los usuarios se bloqueen aunque algunos procesos de trabajo nginx estén inactivos. Apache / mod_wsgi no tiene este problema ya que los procesos de Apache solo aceptarán solicitudes cuando tenga los recursos para manejar realmente la solicitud. Apache / mod_wsgi dará un comportamiento más predecible y confiable.


Una cosa que el servidor web de CherryPy tiene a su favor es que es un servidor web python puro (AFAIK), que puede o no hacer que la implementación sea más fácil para usted. Además, podría ver los beneficios de usarlo si solo está usando un servidor para WSGI y contenido estático.

(advertencia de enchufe desvergonzado: escribí el código WSGI que voy a mencionar)

Kamaelia tendrá soporte WSGI en el próximo lanzamiento. Lo bueno es que probablemente podrá usar el prefabricado o crear el suyo utilizando el código HTTP y WSGI existente.

(final enchufe descarado)

Dicho esto, dadas las opciones actuales, personalmente, probablemente iría con CherryPy porque parece ser el más simple de configurar y puedo entender el código python más de lo que puedo entender el código C.

Puede hacer lo mejor para probar cada uno de ellos y ver cuáles son los pros y los contras de cada uno para su aplicación específica.