python - ocean - uwsgi django nginx
WSGI vs uWSGi con Nginx (4)
Bien, chicos, esta confusión se debe a la falta de detalles de varias fuentes, a la denominación de estos protocolos y a lo que realmente es WSGI.
Resumen:
- WSGI y uwsgi son protocolos, no servidores. Se usa para comunicarse con servidores web para el equilibrio de carga y, especialmente, para aprovechar las características adicionales que HTTP puro no puede proporcionar. Hasta ahora, Nginx y Cherokee han implementado este protocolo.
- uWSGI es un servidor y uno de los protocolos que implementa es WSGI (no confunda el protocolo uwsgi con el servidor uWSGI). WSGI es una specification Python. Hay varias implementaciones de la especificación WSGI y está destinada a ser utilizada para algo más que servidores de aplicaciones / servidores web, pero hay bastantes servidores de aplicaciones WSGI (es decir, CherryPy, que también tiene un servidor web listo para producción compatible con WSGI) , ¡si ya no estabas confundido!).
- Comparar uwsgi con WSGI es comparar naranjas con manzanas.
¿Podría alguien explicar los pros / contras al usar WSGI VS uWSGI con Nginx?
Actualmente estoy construyendo un servidor de producción para el sitio web de Django que he preparado, pero no he podido decidir si debo ir con WSGI o uWSGI. ¿Podría explicar en detalle qué diferencia cada configuración? ¿Qué configuración debería escalar mejor?
Gracias por adelantado
Creo que esto aquí mismo http://flask.pocoo.org/docs/deploying/uwsgi/ es una buena respuesta para aclarar la confusión. La pregunta no es tonta, le sucede a cualquiera que vea los dos términos y no tenga información previa sobre cómo funcionan las cosas fuera del mundo mod_PHP (por ejemplo, nada en contra de php o gente)
El sitio explica bien en términos prácticos lo que se necesita y cuál es la diferencia, así como un buen ejemplo de implementación para nginx.
En general, es mejor ejecutar Python en un proceso separado de su servidor web principal. De esta forma, el servidor web puede tener muchos hilos pequeños que sirven contenido estático muy rápido, mientras que sus procesos de Python separados serán grandes y pesados ββy cada uno ejecutará su propio intérprete de Python. Tan simple WSGI
es malo, porque satura cada uno de tus hilos nginx con un gran intérprete de Python. Usar flup
o gunicorn
o uWSGI
detrás de nginx
es mucho mejor, porque eso libera nginx para simplemente servir contenido, y le permite elegir cuántos subprocesos ligeros nginx ligeros ejecutar, independientemente de su elección de cuántos subprocesos pesados ββde Python traiga para servir contenido dinámico La gente parece muy feliz con gunicorn
en este momento, pero cualquiera de esas tres opciones debería funcionar bien.
En el futuro, también te libera para mover el Python a otro servidor cuando la carga comienza a ser grave.
Esta publicación de blog es una comparación muy detallada de muchos servidores WSGI de Python, con un resumen y algunas recomendaciones al final.