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 查看本文章