[https://tibisay.cenditel.gob.ve/murachi/wiki Inicio] > [https://tibisay.cenditel.gob.ve/murachi/wiki/actividades_2019 Actividades para el 2019] > [https://tibisay.cenditel.gob.ve/murachi/wiki/probando_tornado Estudiando Tornado (web server)] ---- = Estudiando Tornado (web server) = Tornado es un framework diseñado para crear servidores web en modo no bloqueo, permite la continuidad de procesos después de que la transmisión de datos haya concluido- con el lenguaje de programación Python. Tornado es una biblioteca de redes asíncronas que puede gestionar miles de conexiones abiertas mediante el uso de redes entrada / salida no bloqueantes, siendo ideal para long polling, WebSockets y otras aplicaciones que requieren conexión. Tornado se puede dividir en cuatro componentes: [[br]] * Un framework web (que incluye RequestHandler, que es una subclase para crear aplicaciones web y otras clases de soporte). * Implementaciones de HTTP del lado del servidor y del lado del cliente (HttpServer y AsyncHTTPClient). * Una biblioteca de redes asíncronas incluyendo las clases IOLoop y IOStream, las cuales sirven de construcción de bloques para los componentes HTTP y se pueden usar para la implementación de otros protocolos. * Una biblioteca de co-rutinas (tornado.gen), la cual permite que el código asíncrono pueda ser escrito de una manera más directa que las llamadas de vuelta encadenadas. [[br]] '''Notas:''' * Este manual fue probado en GNU/Linux Debian 9 Stretch de 64 bits. * Usaremos $ para describir los comandos que se usaran con usuario regular. * Usaremos # para describir los comandos que se usaran con superusuario. [[br]] == Requerimientos == * Tornado requiere Python superior a la versión 3.4 y no soportará Python 2. [[br]] == 1. Instalación == Para esta prueba instalaremos tornado usando pip: {{{ # pip install tornado }}} [[br]] == 2. Mi primera aplicación con Tornado == 1. Habiendo realizado el paso de la instalación con éxito, se procederá a crear un archivo, se llamará en este caso: '''holamundo''' con una extensión '''.py''' dado que será escrito con Python. 2. Ahora se abre el archivo y dentro de escribirá lo siguiente: {{{ #!/usr/bin/env python # -*- coding: utf-8 -*- #!python # IOLoop maneja los eventos relacionados con los sockets, por ejemplo, si tienen # datos disponibles para leer, si pueden escribirse y si se ha producido un error. import tornado.ioloop # Envía la aplicación al servidor web import tornado.web # Clase que enviará el saludo class HolaMundoHandler(tornado.web.RequestHandler): def get(self): self.write("Mensaje a enviar: ¡Hola mundo!") # Constructor de la aplicación def enviar_saludo_app(): return tornado.web.Application([ (r"/", HolaMundoHandler), ]) if __name__ == "__main__": # Aplicación que se servirá app = enviar_saludo_app() # Puerto en el que será mostrada app.listen(8888) # Corre el servidor tornado.ioloop.IOLoop.current().start() }}} [[br]] == 3. Despliegue de la aplicación == 1. Desde la consola se debe correr el comando: {{{ $ python holamundo.py }}} 2. Visitamos la siguiente URL en el navegador web: {{{ http://localhost:8888/ }}} 3. Nos mostrará el mensaje anteriormente escrito en el código: [[Image(cap-1-tornado.png, 700px)]] == 4. Fuentes: == * https://www.tornadoweb.org/en/stable/ * https://thehackerway.com/2014/11/27/tornado-para-rutinas-de-red-asincronas-y-no-bloqueantes/ * https://www.muycomputerpro.com/2011/06/24/tornado-web-server-llega-a-su-version-2-0 * https://www.nolapeles.com/2009/09/27/servidor-web-de-tiempo-real-opensource-tornado-de-facebook/