2009-11-17 23 views
30

Desde la web he deducido que WSGI es un CGI para el desarrollo/frameworks de python. FCGI parece ser una puerta de enlace más general para una variedad de idiomas. No sé la diferencia de rendimiento entre los dos en referencia a los idiomas Python y C/++.¿Hay una diferencia de velocidad entre WSGI y FCGI?

Respuesta

67

Correcto, WSGI es una definición de API programática de Python y FASTCGI es una definición de protocolo de cable de socket independiente del idioma. Efectivamente están en diferentes capas con WSGI siendo una capa más alta. En otras palabras, uno puede implementar WSGI sobre algo que pasó a usar FASTCGI para comunicarse con un servidor web, pero no al revés.

En general, FASTCGI es un protocolo de conexión por cable lo que significa que siempre necesita algún tipo de interfaz de programación en la parte superior para usarlo. Para Python, una de esas opciones es WSGI. Como FASTCGI es solo un medio para un fin, uno realmente no puede comparar su rendimiento con WSGI en ese caso porque WSGI no es un protocolo comparable de socket, sino un usuario de FASTCGI.

Se podría tratar de comparar el rendimiento de diferentes interfaces de idiomas en la parte superior de fastcgi, pero en general que es bastante de sentido en sí misma como la capa de red más baja y servir peticiones de servidor no son el cuello de botella. En cambio, su código de aplicación y base de datos serán.

+1

Creo que es importante preguntar cuál es la diferencia de tiempo entre una aplicación fcgi que responde a una solicitud y una aplicación wsgi que responde a la solicitud. Como fcgi y wsgi son dos formas diferentes de interconectar un lenguaje de programación con una solicitud web, hacen cosas muy similares. – Ninjaxor

20

Son dos cosas diferentes. WSGI es una interfaz específica de Python para escribir aplicaciones web. Hay contenedores para casi cualquier protocolo de servidor web para proporcionar la interfaz WSGI. FastGCI (FCGI) es uno de dichos protocolos de servidor web. Entonces, WSGI es una capa de abstracción, mientras que CGI/FastCGI/mod_python es la forma en que los servidores web reales hablan con la aplicación. Algunos códigos tienen que traducir la interfaz nativa a WSGI (hay un módulo CGI en wsgiref, hay flup para FastCGI, etc.). También hay mod_wsgi para Apache, que hace la traducción directamente en un módulo Apache, por lo que no necesita ningún contenedor Python.

Cuestiones relacionadas