tutorial servidor produccion framework español environ con python cgi wsgi

produccion - servidor web con python



¿Qué son WSGI y CGI en inglés simple? (4)

Desde un punto de vista totalmente retroactivo, Blankman, aquí está mi "Página de introducción" para la Interfaz de puerta de enlace de servicios web:

PRIMERA PARTE: SERVIDORES WEB

Los servidores web brindan respuestas. Se sientan, esperan pacientemente y luego, sin advertencia alguna, repentinamente:

  • un proceso de cliente envía una solicitud. El proceso del cliente podría ser un servidor web, un bot, una aplicación móvil, lo que sea. Es simplemente "el cliente"
  • el servidor web recibe esta solicitud
  • murmurar deliberadamente varias cosas suceden (ver abajo)
  • El servidor web devuelve algo al cliente
  • servidor web se sienta de nuevo

Los servidores web (al menos, los mejores) son MUY buenos en esto. Escalan el procesamiento hacia arriba y hacia abajo dependiendo de la demanda, mantienen con confianza conversaciones con los clientes más descabellados sobre redes realmente rudas y nunca tenemos que preocuparnos por eso. Ellos solo siguen sirviendo.

Este es mi punto: los servidores web son solo eso: servidores. No saben nada sobre el contenido, nada sobre los usuarios, nada más que cómo esperar mucho y responder de manera confiable.

Su elección de servidor web debe reflejar su preferencia de entrega, no su software. Su servidor web debería estar a cargo de servir, no procesar o cosas lógicas.

SEGUNDA PARTE: SOFTWARE (PYTHON)

El software no se sienta. El software solo existe en el momento de la ejecución. El software no es terriblemente servicial cuando se trata de cambios inesperados en su entorno (los archivos no están donde se espera, los parámetros se renombran, etc.). Aunque la optimización debería ser un principio central de su diseño (por supuesto), el software en sí mismo no se optimiza. Los desarrolladores optimizan. El software se ejecuta El software hace todas las cosas en la sección de "murmullo deliberado" de arriba. Podría ser cualquier cosa

Su elección o diseño de software debe reflejar su aplicación, su elección de funcionalidad y no su elección de servidor web.

Aquí es donde el método tradicional de "compilar en" idiomas para los servidores web se vuelve doloroso. Terminas poniendo código en tu aplicación para lidiar con el entorno del servidor físico o, al menos, forzándote a elegir una biblioteca ''contenedora'' adecuada para incluir en tiempo de ejecución, para dar la ilusión de uniformidad en todos los servidores web.

¿QUÉ ES WSGI?

Entonces, finalmente, ¿qué es WSGI? WSGI es un conjunto de reglas , escrito en dos mitades. Están escritos de tal manera que se pueden integrar en cualquier entorno que dé la bienvenida a la integración.

La primera parte, escrita para el lado del servidor web, dice "OK, si quieres tratar con una aplicación WSGI, así es como el software estará pensando cuando se carga. Estas son las cosas que debes poner a disposición de la aplicación, y aquí es la interfaz (diseño) que puede esperar que tenga cada aplicación. Además, si algo sale mal, así es como la aplicación estará pensando y cómo puede esperar que se comporte ".

La segunda parte, escrita para el software de la aplicación Python, dice "OK, si desea tratar con un servidor WSGI, así es como el servidor estará pensando cuando se contacte con usted. Estas son las cosas que debe poner a disposición del servidor, y aquí está la interfaz (diseño) que puede esperar que tenga cada servidor. Además, si algo sale mal, así es como debe comportarse y esto es lo que debe decirle al servidor ".

Así que ahí lo tienen: los servidores serán servidores y el software será software, y esta es una manera en la que se pueden llevar bien sin tener que hacer concesiones a los detalles del otro. Este es WSGI.

mod_wsgi, por otro lado, es un complemento para Apache que le permite hablar con software compatible con WSGI, en otras palabras, mod_wsgi es una implementación , en Apache, de las reglas de la primera parte del libro de reglas anterior.

En cuanto a CGI ... pregúntale a alguien más :-)

Cada vez que leo WSGI o CGI me estremezco. Intenté leerlo antes, pero nada se ha estancado.

¿Qué es realmente en inglés simple?

¿Simplemente canaliza las solicitudes a un terminal y redirige la salida?


Si no tiene claro todos los términos en este espacio, y seamos sinceros, es un acrónimo cargado de confusión, también hay un buen lector de fondo en la forma de un HOWTO oficial de python que analiza CGI vs. FastCGI vs. WSGI y así en. Ojalá lo hubiera leído primero.


Tanto CGI como WSGI definen interfaces estándar que los programas pueden usar para manejar solicitudes web. La interfaz CGI está en un nivel más bajo que WSGI, e implica que el servidor configure las variables de entorno que contienen los datos de la solicitud HTTP, y el programa devuelve algo formateado de forma muy parecida a una respuesta de servidor HTTP vacía.

WSGI, por otro lado, es una interfaz específica de Python que permite a los programadores escribir aplicaciones que son independientes del servidor y que se pueden incluir en otras aplicaciones WSGI (middleware).


WSGI ejecuta el intérprete de Python en el inicio del servidor web, ya sea como parte del proceso del servidor web (modo incrustado) o como un proceso separado (modo daemon), y carga el script en él. Cada solicitud da como resultado una función específica en el script que se llama, con el entorno de solicitud pasado como argumentos a la función.

CGI ejecuta el script como un proceso separado para cada solicitud y usa variables de entorno, stdin y stdout para "comunicarse" con él.