Tornado学习笔记

1 tornado简介

基于Python的Web服务框架和异步网络库,通过利用非阻塞网络 I/O, Tornado可以承载成千上万的活动连接, 完美的实现了长连接,WebSocket,和其他对于每一位用户来说需要长连接的程序。

2 Tornado例程

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

def my_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])

if __name__ == "__main__":
    app = my_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

3 异步和非阻塞I/O

实时的web特性通常需要为每个用户一个大部分时间都处于空闲的长连接.在传统的同步web服务器中,这意味着需要给每个用户分配一个专用的线程,这样的开销是十分巨大的.

为了减小对于并发连接需要的开销,Tornado使用了一种单线程事件循环的方式.这意味着所有应用程序代码都应该是异步和非阻塞的,因为在同一时刻只有一个操作是有效的.

4 Tornado网络框架特点

(1)完备的web框架

(2)是一个高效的网络库

(3)提供高效HTTPClient

(4)提供高效的内部HTTP服务器

(5)完备的WebSocket支持,WebSocket是HTML5的一种新标准,实现浏览器与服务器之间的双向实时通信。

5 Python关键字yield

(1)迭代器,是一种访问集合内元素的一种方式

(2)协程,详见(http://codingpy.com/article/python-generator-notes-by-kissg/)

6 编写协程函数

(1)使用gen.coroutine修饰器

扫描二维码关注公众号,回复: 5733742 查看本文章

猜你喜欢

转载自blog.csdn.net/moge19/article/details/80146438