En producción, Apache + mod_wsgi o Nginx + mod_wsgi?

¿Qué usar para una aplicación WSGI de 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 escucho que no es muy adecuado para una aplicación de carga muy alta, ¿qué sabes de esto?

Nota : no utilicé Python Web Framework, solo escribí todo desde cero.
Nota ‘ : Otras sugerencias también son bienvenidas.

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

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

La principal diferencia es que nginx está diseñado para manejar un gran número de conexiones en un espacio de memoria mucho más pequeño. Esto lo hace muy adecuado para aplicaciones que están haciendo 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 en bruto, nginx es más rápido, pero no tanto como para incluirlo 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 vayas 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 algunas evaluaciones comparativas, ya que no importa lo que le digan, su millaje puede variar.

Una cosa que el servidor web de CherryPy tiene a su favor es que es un servidor web puro de Python (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á utilizando un servidor para WSGI y contenido estático.

(Advertencia descarada: escribí el código WSGI que voy a mencionar)

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

(final del enchufe descarado)

Dicho esto, dadas las opciones actuales, personalmente me gustaría ir con CherryPy porque parece ser la más sencilla de configurar y puedo entender el código de Python más que el código C.

Puede hacer todo lo posible 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.