2012-08-02 30 views
8

Estoy experimentando con varias configuraciones para implementar aplicaciones django. Mi primera opción fue usar un servidor apache simple con mod_wsgi, que había implementado antes para uso privado. Dado que la implementación actual es para uso público, estoy buscando varias opciones. Según la información disponible en línea, parece que es bueno tener nginx para servir contenido estático, así como un proxy inverso para un servidor de contenido dinámico. Ahora, dado mi conocimiento previo de Apache, estaba considerando usar lo mismo para el contenido dinámico. Pero luego me encontré con Gunicorn y luego con UWSGI. Actualmente estoy implementando uWSGI. Veo que permite múltiples protocolos, incluido http.¿El protocolo uwsgi es más rápido que el protocolo http?

¿Cuáles son las ventajas de usar un protocolo sobre el otro? Entiendo que dado mi requisito de escalar la aplicación en varios servidores, significa que no puedo usar los sockets de Unix, que parecen ser recomendados en algunos tutoriales. Entonces las otras opciones son socket TCP con uwsgi o con http. Tienen mucha diferencia teórica. No conozco los detalles del protocolo uwsgi y me gustaría saber si usarlo a través del protocolo http haría las cosas más rápidas.

Respuesta

15

En última instancia sus cuellos de botella no van a estar en los mecanismos de enrutamiento particulares para las solicitudes a menos que realmente ensucie la configuración. Así que podría decirse que es una pérdida de tiempo centrarse demasiado en basar decisiones sobre cosas a ese nivel.

Mira mi charla de PyCon para conocer el contexto de los cuellos de botella realmente.

http://lanyrd.com/2012/pycon/spcdg/

+0

he visto su charla y tenía la sensación de que esto podría ser su respuesta. Pero solo para un propósito de conocimiento académico, ¿es más rápido? –

+3

La diferencia es que en HTTP el destinatario tiene que analizar el separador de campo del encabezado de solicitud y el marcador de fin de línea. En uwsgi, los bytes de longitud binaria se incorporan en los datos, por lo que el destinatario ya sabe qué longitud de campo es y no tiene que analizarlo. Así que puedes ahorrar un minuto de tiempo usando uwsgi, pero realmente estás dividiendo los pelos. El diseño del software del lado del servidor va a ser mucho más importante. La codificación descuidada en el algoritmo para manejarlo eliminaría rápidamente cualquier ahorro. Incluso el autor de uWSGI reconocerá que en ese nivel la diferencia es muy leve. –

Cuestiones relacionadas