龙卷风模块中的handle_connection是什么ioloop simple tcpserver的connection_ready?

时间:2016-07-07 22:29:58

标签: python tornado

Tornado ioloop.py给出了一个简单的TCP服务器的示例用法,通过这个简单的可以运行,但是函数connection_ready(结束行)中的handle_connection是什么,或者需要由我自己定义?

    import errno
    import functools
    import tornado.ioloop
    import socket
    def connection_ready(sock, fd, events):
        while True:
            try:
                connection, address = sock.accept()
            except socket.error as e:
                if e.args[0] not in (errno.EWOULDBLOCK, errno.EAGAIN):
                    raise
                return
            connection.setblocking(0)
            handle_connection(connection, address)
    if __name__ == '__main__':
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
        sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        sock.setblocking(0)
        sock.bind(("", port))
        sock.listen(128)
        io_loop = tornado.ioloop.IOLoop.current()
        callback = functools.partial(connection_ready, sock)
        io_loop.add_handler(sock.fileno(), callback, io_loop.READ)
        io_loop.start()

1 个答案:

答案 0 :(得分:0)

是的,handle_connection是您为应用程序编写的函数。

另请参阅tornado.tcpserver.TCPServer课程,这比直接在IOLoop上构建更容易使用。