Pregunta

¿Qué usar para una aplicación 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 sobre esto?

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

¿Fue útil?

Solución

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 controlado por eventos, tiene características de comportamiento que son perjudiciales para bloquear aplicaciones, como es el caso de las aplicaciones basadas en WSGI. En el peor de los casos, con la configuración multiproceso de nginx, puede ver bloqueadas las solicitudes de los usuarios, aunque algunos procesos de trabajo de nginx pueden estar inactivos. Apache / mod_wsgi no tiene este problema ya que los procesos de Apache solo aceptarán solicitudes cuando tenga los recursos para manejar la solicitud. Apache / mod_wsgi dará un comportamiento más predecible y confiable.

Otros consejos

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

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 están haciendo conexiones como cometas 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 en bruto, nginx es más rápido, pero no tanto como para incluirlo como factor determinante.

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

Además, si usa mod_wsgi, es su servidor wsgi, por lo que ni siquiera necesita cherrypy.

Aparte de eso, el mejor consejo que puedo dar es intentar configurar su aplicación en ambos y hacer algunos puntos de referencia, ya que no importa lo que alguien le diga, su kilometraje puede variar.

Una cosa que el servidor web de CherryPy tiene a su favor es que es un servidor web de Python puro (AFAIK), que puede o no facilitar la implementación 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 descarado: escribí el código WSGI que estoy a punto de mencionar)

Kamaelia tendrá soporte de WSGI en la próxima versión. Lo bueno es que es probable que puedas usar el prefabricado o construir el tuyo usando el código HTTP y WSGI existente.

(tapón descarado final)

Dicho esto, dadas las opciones actuales, probablemente iría personalmente con CherryPy porque parece ser el más simple de configurar y puedo entender más el código de Python que 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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top