examples python web-services server wsgi

python - examples - ¿Qué es exactamente Werkzeug?



wsgi python flask (3)

No no lo es

Werkzeug (biblioteca WSGI) es como un comunicador entre su código python y el servidor http nginx / apache

Aquí está el caso de uso completo de Werkzeug WSGI:

WSGI tiene dos lados: el lado "servidor" o "pasarela" (a menudo un servidor web como Apache o Nginx), y el lado "aplicación" o "marco" (el propio script de Python). Para procesar una solicitud WSGI, el lado del servidor ejecuta la aplicación y proporciona información del entorno y una función de devolución de llamada al lado de la aplicación. La aplicación procesa la solicitud, devolviendo la respuesta al lado del servidor mediante la función de devolución de llamada que se proporcionó.

Entre el servidor y la aplicación, puede haber un middleware WSGI, que implementa ambos lados de la API. El servidor recibe una solicitud de un cliente y la reenvía al middleware. Después del procesamiento, envía una solicitud a la aplicación. El middleware reenvía la respuesta de la aplicación al servidor y, en última instancia, al cliente. Puede haber múltiples middlewares formando una pila de aplicaciones compatibles con WSGI.

Espero eso ayude

Desde el documento oficial dijo:

Werkzeug es una biblioteca de utilidades WSGI para Python.

Sin embargo, cuando ejecuto mi aplicación web Flask, noté que en el encabezado de respuesta del servidor, se mostraba

HTTP/1.0 200 OK Content-Type: text/html; charset=utf-8 Content-Length: 13 Server: Werkzeug/0.11.9 Python/2.7.10 Date: Tue, 03 May 2016 12:50:08 GMT

En la cuarta línea decía que el servidor es Werkzeug .

¿Por qué eso no significa que Werkzeug es un servidor web como Apache ?


No, no es un SERVIDOR WEB como Apache. Es una biblioteca CGI. Dado que APACHE (o su aplicación FLASK) probablemente esté usando la biblioteca para servir algunas solicitudes HTTP, probablemente agregue ese encabezado en la respuesta.


Porque no lo es.

En su configuración, probablemente utilice el "servidor de desarrollo" (la función run_simple ) para realizar pruebas. Así que es en este caso de uso como el Apache un hombre muy pobre, pero solo en un sentido que es capaz de responder a las solicitudes HTTP correctamente.

Si verifica los documentos http://werkzeug.pocoo.org/docs/serving/ , verá la siguiente nota:

El servidor de desarrollo no está diseñado para ser utilizado en sistemas de producción. Fue diseñado especialmente para propósitos de desarrollo y tiene un bajo rendimiento bajo carga alta. Para las configuraciones de implementación, eche un vistazo a las páginas de Implementación de aplicaciones.