我正在实现一个简单的服务器,如果 3 秒内没有收到任何消息,它应该打印一条消息。
处理程序
class SingleTCPHandler(SocketServer.StreamRequestHandler):
def handle(self):
while True:
message = self.rfile.readline().strip()
print message
服务器
class SimpleServer(SocketServer.TCPServer):
timeout = 3
def handle_timeout(self):
print "Timeout"
def __init__(self, server_address, RequestHandlerClass):
SocketServer.TCPServer.__init__(self, server_address, RequestHandlerClass)
在这里,我扩展了TCPServer
用于测试超时方法。我已将属性设置timeout
为3
. 根据文档,如果该时间过去并且没有消息发送到客户端handle_timeout()
,则调用它,在我的情况下,它只会打印“超时”。
BaseServer.timeout
超时持续时间,以秒为单位,如果不需要超时,则为 None。如果handle_request() 在超时时间内没有收到传入请求,则调用handle_timeout() 方法。
我启动服务器,并观察它的输出。当我连接到它并发送一些消息时,它们通常会被打印出来。但是,如果我在 3 秒或更长时间内没有发送任何内容,则不会发生任何事情。好像timeout
andhandle_timeout()
还没有实现。
这种行为的根源可能是什么?