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()
が実装されていないかのように。
この動作の原因は何ですか?