Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
fw:tornado [2013/08/24 18:31] alfred [Tornado] |
fw:tornado [2020/05/09 09:25] (actual) |
||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| ====== Tornado ====== | ====== Tornado ====== | ||
| ===== Básico ===== | ===== Básico ===== | ||
| + | * [[http://www.tornadoweb.org/en/stable/|Web del proyecto]] | ||
| + | * [[http://www.tornadoweb.org/en/branch2.4/overview.html|Overview]] y [[http://www.tornadoweb.org/en/branch2.4/documentation.html|Documentación]]. | ||
| + | |||
| <code python> | <code python> | ||
| import tornado.ioloop | import tornado.ioloop | ||
| Línea 17: | Línea 20: | ||
| tornado.ioloop.IOLoop.instance().start() | tornado.ioloop.IOLoop.instance().start() | ||
| </code> | </code> | ||
| - | Una aplicación | + | Una aplicación que utilice tornado se define a partir de unos patrones que indican la ruta y las clases que gestionarán peticiones a dichas rutas. |
| - | ===== Cómo... ===== | + | ==== RequestHandler's ==== |
| - | ==== ... Servir contenido estático? ==== | + | <code python> |
| - | ==== ... Indicar que es debug y se muestre más info por consola? ==== | + | class MainHandler(tornado.web.RequestHandler): |
| + | def get(self): | ||
| + | self.write("You requested the main page") | ||
| + | class StoryHandler(tornado.web.RequestHandler): | ||
| + | def get(self, story_id): | ||
| + | self.write("You requested the story " + story_id) | ||
| + | |||
| + | application = tornado.web.Application([ | ||
| + | (r"/", MainHandler), | ||
| + | (r"/story/([0-9]+)", StoryHandler), | ||
| + | ]) | ||
| + | </code> | ||
| + | ==== Cómo... ==== | ||
| + | === ... Instalar? === | ||
| + | <code> | ||
| + | $ pip install tornado | ||
| + | </code> | ||
| + | === ... Servir contenido estático? === | ||
| + | <code python> | ||
| + | application = tornado.web.Application([ | ||
| + | (r'/(.*)', tornado.web.StaticFileHandler, {'path': '../static/'}), | ||
| + | (r'/(.*)', tornado.web.StaticFileHandler, {'path': '../static/index.html'}) | ||
| + | ]) | ||
| + | </code> | ||
| + | <code python> | ||
| + | class IndexHandler(tornado.web.RequestHandler): | ||
| + | def get(self, *args, **kwargs): | ||
| + | self.render('index.html') | ||
| + | </code> | ||
| + | === ... Indicar que es debug y se muestre más info por consola? === | ||
| + | Como argumento ''debug=True'' al constructor del objeto aplicación. | ||
| ===== Notas ===== | ===== Notas ===== | ||
| - | * {{:fw:tornado:tornado_zmq_websockets.zip|Estos apuntes}} explican cómo crear un websocket que publica a partir de datos recibidos por ZeroMQ. | + | * {{:fw:tornado:tornado_zmq_websockets.zip|Estos apuntes}} explican cómo crear un websocket que publica a partir de datos recibidos por ZeroMQ. Fuentes: |
| + | * [[http://zeromq.github.io/pyzmq/eventloop.html]] | ||
| + | * [[https://learning-0mq-with-pyzmq.readthedocs.org/en/latest/pyzmq/multisocket/tornadoeventloop.html]]. | ||
| + | * [[https://github.com/FZambia/tornado-zmq-sockjs-example]] | ||