码迷,mamicode.com
首页 > 其他好文 > 详细

tornado异步原理(2)——高并发

时间:2018-11-03 01:53:15      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:多个   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。

tornado异步原理(2)——高并发

标签:多个   res   tor   and   socket   lis   self   tornado异步   并且   

原文地址:https://www.cnblogs.com/madun/p/9898795.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!