在tornado中要使用异步的特性,tcpserver要做的通用的工作
1、创建一个socket、设置为非阻塞模式、在指定的端口监听
2、将该socket添加至ioloop中,并设置回掉函数
3、在回掉函数中accept客户端连接,并将创建的socket包装为iostream(这样可以更方便地用异步的方式读写socket)。
tornado.tcpserver.TCPServer的作用
帮我们完成上述通用的工作
tornado.tcpserver.TCPServer的事件循环
tornado中除了ioloop基础的事件循环外,很多组件也都可以看作是一个事件循环,这些事件循环归根结底都是由ioloop驱动的。上一篇中的iostream可以看作一个事件循环,tcpserver也可以看做一个事件循环,它只循环一种事件:tcp连接建立。
设置回调函数的方式与ioloop不同,上层通过继承tcpserver,重写handle_stream来设置回调函数。
应用举例
from tornado.tcpserver import TCPServer
from tornado import gen
class MyTCPConnection(object):
def __init__(self, stream, address):
self.stream = stream
self.address = address
@gen.coroutine
def start_serving(self, server):
while True:
#循环从stream中读取消息,每个消息以tha

本文深入剖析tornado的tcpserver,揭示其在实现异步特性中的关键步骤,包括创建非阻塞socket、监听端口、设置事件循环及回调处理客户端连接。同时,探讨TCPServer的角色及其内部事件循环机制,并给出具体的应用实例。
最低0.47元/天 解锁文章
309

被折叠的 条评论
为什么被折叠?



