• Save

Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

Tornado

on

  • 1,142 views

Tornado & Webservices Presentation

Tornado & Webservices Presentation

Statistics

Views

Total Views
1,142
Views on SlideShare
1,052
Embed Views
90

Actions

Likes
0
Downloads
0
Comments
0

2 Embeds 90

http://cnc.dn.ua 89
http://localhost:4000 1

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />

Tornado Tornado Presentation Transcript

  • Веб-Cервер Tornado Автор: Александр Литовченко http://litovchenko.com
  • Особенности Легкий неблокирующий Framework и Webserver без внешних зависимостей Высокая скорость работы Поддержка “длинных запросов” и WebSockets Автоматический выбор оптимального select()
  • Присутствует: URL Диспетчер HTML Шаблонизатор Аутентификация (поддержка нескольких OpenID провайдеров Google, Twitter, Facebook,...) Средства локализации (встроенные и gettext) Secure Cookies Асинхронный Http клиент
  • Отсутствует: ORM и какие либо встроенные средства работы с базами данных (примитивная mysql обертка не в счет) Высокоуровневая поддержка форм (like Django) Поддержка процессов (like Twisted) Какие-либо полезные Contrib Application
  • Tornado WebSocket Chat Простейший пример чата с использованием Tornado + WebSockets + web_socket_js Source Archive: http://wschat.litovchenko.com:8000/static/wschat.tgz Online: http://wschat.litovchenko.com:8000/ Flash Policy для web_socket_js
  • WebSocket Chat (Python) import os import tornado.web, tornado.websocket, tornado.httpserver ROOT = os.path.abspath(os.path.dirname(__file__)) listeners = [] class IndexHandler(tornado.web.RequestHandler): def get(self): self.render("index.html") class WSHandler(tornado.websocket.WebSocketHandler): def open(self): listeners.append(self) def on_message(self, message): for l in listeners: l.write_message(message) def on_close(self): listeners.remove(self) class Application(tornado.web.Application): def __init__(self): settings = dict( static_path=os.path.join(ROOT, 'static'), template_path=ROOT, ) tornado.web.Application.__init__(self, ( (r"/", IndexHandler), (r"/ws/", WSHandler), ), **settings) http_server = tornado.httpserver.HTTPServer(Application()) http_server.listen(8000, '178.63.17.142')
  • WebSocket Chat (Html) <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Tornado Web Sockets Chat Example for CnC</title> <script type="text/javascript" src="/static/jquery.js"></script> <script type="text/javascript" src="/static/jquery.json.js"></script> <script type="text/javascript" src="/static/swfobject.js"></script> <script type="text/javascript" src="/static/FABridge.js"></script> <script type="text/javascript" src="/static/web_socket.js"></script> </head> <body> <form onsubmit="return form_submit()"> <h1>Tornado Web Sockets Chat Example for CnC</h1> <p><a href="/static/wschat.tgz">Download Source</a></p> <label for="txt">Щачло:</label> <input id="txt" /> <input type="submit" value="Попячся" /> </form> <div id="chat"></div> <script type="text/javascript"> var ws; WEB_SOCKET_SWF_LOCATION = "/static/WebSocketMain.swf"; WEB_SOCKET_DEBUG = false; function form_submit(){ ws.send($.toJSON({'body':$('#txt').val()})); $('#txt').val(''); $('#txt').focus(); return false; } $(document).ready(function() { ws = new WebSocket("ws://wschat.litovchenko.com:8000/ws/"); ws.onmessage = function(e) { var m = $.parseJSON(e.data); $("#chat").append('<p>'+m['body']+'</p>'); }; });
  • Выводы: Область применения Стандартные сайты со сложной бизнес-логикой наш выбор: Django, RoR, ... Сложные распределенные веб-системы с внутренними фоновыми процессами наш выбор: Twisted, GoogleApps, J2EE, ... Интерактивные Веб-Сервисы требующие мгновенного отклика (игры, чаты, ...) в этом случае Tornado может быть неплохим выбором