2010-04-29 6 views
8

En primer lugar:¿Podría alguien darme una descripción técnica de alto nivel de los detalles de WSGI detrás de las escenas frente a otras aproximaciones de la interfaz web con Python?

  1. entiendo lo WSGI es y cómo utilizar que
  2. entiendo lo "otros" métodos (Apache mod-pitón, fcgi, et al) son, y cómo usarlos
  3. entiendo sus diferencias prácticas

Lo no entiendo es cómo cada uno de los diversos "otros" métodos de trabajo en comparación con algo como UWSGI, detrás las escenas. ¿Su servidor (Nginx, etc.) enruta la solicitud a su aplicación WSGI y UWSGI crea un nuevo intérprete de Python para cada solicitud enrutada a él? ¿Qué tan diferente es de los otros métodos más tradicionales/de parche de mono WSGI (aparte de la diferente y más fácil interfaz de Python que ofrece WSGI)? ¿Qué momento de la bombilla me estoy perdiendo?

+0

Es posible que desee echar un vistazo a [Buscando un diagrama para explicar WSGI] (http://stackoverflow.com/q/1303118/95735) –

+0

@PiotrDobrogost - ¡gracias! – orokusaki

Respuesta

8

A excepción de CGI, casi nunca se crea un nuevo intérprete de Python por solicitud. Leer:

http://blog.dscpl.com.au/2009/03/python-interpreter-is-not-created-for.html

Esto fue escrito en relación con mod_python pero también se aplica a mod_wsgi y cualquier mecanismo de WSGI de alojamiento que utiliza procesos persistentes.

Lea también:

http://www.python.org/dev/peps/pep-0333/#environ-variables

Allí encontrará describe la variable 'wsgi.run_once' descrito. Esto se usa para indicar a una aplicación WSGI cuando se usa un mecanismo de alojamiento que vería un proceso que solo maneja una solicitud y luego sale, es decir, CGI. Por lo tanto, escriba una aplicación de prueba hello world que desempaquete el entorno WSGI y vea qué está configurado para lo que está utilizando.

También preste atención a las variables 'wsgi.multiprocess' y 'wsgi.multithread'. Le informan si se está utilizando un servidor de procesos múltiples, de modo que hay varias instancias de solicitudes de manejo de aplicaciones al mismo tiempo. La variable 'wsgi.multithread' le dice si el proceso está manejando múltiples solicitudes en hilos concurrentes en el mismo proceso.

Para más información sobre los modelos de multiproceso y multihilo en relación con los sistemas de Apache embebidos, tales como mod_python y mod_wsgi, y modo demonio mod_wsgi, ver:

http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading

+0

@Graham gracias por su respuesta. – orokusaki

Cuestiones relacionadas