Flujo de una petición a web2py
- LLega una petición HTTP al servidor web. El servidor procesa cada servidor en su propio hilo en paralelo
- Se procesa la cabecera HTTP y se pasa al "dispatcher"
- El "dispatcher" decide qué aplicación tiene que manejar la petición y analiza el PATH_INFO de la URL en la llamada a una función. Cada URL corresponde a una llamada a una función.
- Las peticiones de fichero de la carpeta static se maenjan directamente. Los ficheros grandes se envía directamente por streaming al cliente.
- El resto de peticiones se mapean a una acción (función en un fichero de controlador) en la aplicación solicitada.
- Antes de llamar a la función:
- Si el encabezado de la petición tiene una cookie de sesión para la app, se recupera el objeto sesión,
- Si no, se crea un id de sesión.
- Se crea un entorno de ejecución para la petición. Los modelos se ejecutarán en este entorno.
- Finalmente la acción del controlador se ejecuta en este entorno.
- Si la acción devuelve una cadena, ésta se devuelve al cliente (los HTML helpsers de web2py se serializan y devuelven al cliente también)
- Si la acción devuelve un objeto iterable, se recorre y se envían los datos al cliente
- Si devuelve un diccionario, trata de localizar la vista que formatea el diccionario. La vista tiene que tener el mismo nombre que la acción y la misma extensión que la página solicitada (por defecto .html) Si no, web2py usa unan vista genérica.
|
http://www.latinuxpress.com/books/drafts/web2py/_images/diagram1.png