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()
答案 0 :(得分:0)
是的,handle_connection
是您为应用程序编写的函数。
另请参阅tornado.tcpserver.TCPServer
课程,这比直接在IOLoop
上构建更容易使用。