标签:多个 res tor and socket lis self 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。
标签:多个 res tor and socket lis self tornado异步 并且
原文地址:https://www.cnblogs.com/madun/p/9898795.html