私が知っている限り、twisted は非同期でイベント駆動型であり、誰かがタイムアウトの必要はないと言っていました。2分ごとにデータをサーバーに送信する組み込みマシンである100を超えるクライアントに接続されるサーバーアプリケーションを構築する必要があり、各パケットまたはデータのサイズは238〜1500バイトになります。したがって、実際のケースでは、tcp はデータを複数のパケットに分割するため、タイムアウトを実装する必要があるか、twisted がそのような状況を処理します。私は新しいねじれたので、どんなアドバイスでも。タイムアウトのないサーバー用の次のコードがあります。タイムアウトの終わりに、接続が生きている間に完全なパケットが受信されない場合、パケットを破棄したいだけです。
class Server(LineReceiver):
def connectionMade(self):
self.factory.clients.append(self)
self.setRawMode()
self._peer = self.transport.getPeer()
print 'Connected Client', self._peer
def connectionLost(self, reason):
self.factory.clients.remove(self)
print 'Lost connection from', self._peer
def rawDataReceived(self, data):
inputArray = [ord(inp) for inp in data]
#do something
def main():
"""This runs the protocol on port 8000"""
factory = protocol.ServerFactory()
factory.protocol = Server
factory.clients = []
reactor.listenTCP(8000,factory)
reactor.run()