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异步原理——高并发的主要内容,如果未能解决你的问题,请参考以下文章

Tornado从入门到进阶 打造支持高并发的技术论坛

Tornado学习之异步原理

Python3中tornado高并发框架

tornado异步原理

Tornado 高并发源码分析之一---启动一个web服务

tornado异步原理--异步事件