There's a helper in Twisted for this pattern, twisted.protocols.policies.TimeoutMixin
:
from twisted.protocols.policies import TimeoutMixin
from twisted.internet.protocol import Protocol
class YourProtocol(Protocol, TimeoutMixin):
def connectionMade(self):
self.setTimeout(N)
def dataReceived(self, data):
self.resetTimeout()
def timeoutConnection(self):
self.transport.abortConnection()