tornado异步原理——高并发
Posted madun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tornado异步原理——高并发相关的知识,希望对你有一定的参考价值。
如下代码所示,当tornado web server 的TCPSever接收到客户端的socket时,会将该soket添加至ioloop监听列表,
当socket可读时,ioloop会调用回掉函数tcpserver._handle_connection()函数 —— tornado io异步事件
class TCPServer(object): def listen(self, port, address=""): sock = bind_sockets(port, address=address) self.add_sockets(sock) def add_sock(self, sock): if self.io_loop is None: self.io_loop = IOLoop.current() #IOLoop是个单例模式的类,通过该方法获取实例 #将sock添加至ioloop的监听列表,并且设置回掉函数为self._handle_connection,当sock中有tcp请求时,ioloop调用该回调函数 add_accept_handler(sock, self._handle_connection, io_loop=self.io_loop)
tornado底层通过epoll监听其监听列表中的所有soket,epoll是linux操作系统提供的监听多个socket的接口,因为epool ioloop可以同时监听上千个socket,加上ioloop的异步机制使得tornado成为高并发的webserver。
以上是关于tornado异步原理——高并发的主要内容,如果未能解决你的问题,请参考以下文章