python - servidor - ¿Cuál es la diferencia entre scgi y wsgi?
servidor web con python (3)
¿Cuál es la diferencia entre estos dos? ¿Cuál es mejor / más rápido / confiable?
Ambas son especificaciones para conectar una aplicación web en un servidor web. Una diferencia evidente es que WSGI proviene del mundo de Python, y creo que no hay implementaciones que no sean de Python.
Las especificaciones generalmente no son comparables en función de mejor / más rápido / confiable.
Solo sus implementaciones son comparables, y estoy seguro de que encontrarán buenas implementaciones de ambas especificaciones.
SCGI es un medio independiente del idioma para conectar un servidor web front-end y una aplicación web. WSGI es un estándar de interfaz específico de Python para aplicaciones web.
Aunque ambos tienen sus raíces en CGI, tienen un alcance bastante diferente y, de hecho, se puede usar de manera bastante razonable a la vez, por ejemplo, tener un mod_scgi en la conversación del servidor web con una aplicación WSGI como servidor SCGI. Existen múltiples implementaciones de bibliotecas que ejecutarán aplicaciones WSGI como servidores SCGI para usted (por ejemplo, wsgitools, cherrypy).
Ambos son ''confiables'', en la medida en que pueda considerar una especificación confiable en oposición a una implementación particular. En estos días, probablemente escribiría su aplicación como un WSGI invocable, y consideraría la cuestión del despliegue por separado.
Tal vez una interfaz Apache + mod_wsgi (incrustada) podría ser un poco más rápida que un Apache + mod_scgi + (SCGI wrapper lib), pero con toda probabilidad no va a ser muy diferente. Más valiosa es la capacidad de ejecutar la aplicación en una variedad de servidores, plataformas y estándares de conexión.
SCGI (como FastCGI) es un protocolo (serializado) adecuado para la comunicación entre procesos entre un servidor web y una aplicación web.
WSGI es una API de Python que conecta dos (o más) módulos compatibles con Python WSGI dentro del mismo proceso (intérprete de Python). Un módulo representa el servidor web (ya sea una implementación Python en el servidor web en proceso o una puerta de enlace a un servidor web en otro proceso, por ejemplo, SCGI). El otro módulo es o representa la aplicación web. Además, cero o más módulos entre estos dos módulos, pueden servir como módulos de "middleware" de WSGI, haciendo cosas como administración de sesiones / cookies, almacenamiento en caché de contenido, autenticación, etc. La API de WSGI usa funciones de lenguaje Python como iteración / generadores y aprobación de llamadas objetos entre los módulos compatibles con WSGI.