[Twisted-Python] reconnecting from the client
Bosnjak Zoran ITWEP
Bosnjak at iskratel.si
Mon Jul 26 11:13:37 EDT 2004
Hello,
in my simple client I need a mechanism for reconnecting to the server:
1. If the server is not responding at the momment, the client should keep trying to connect
2. If the connection once become active and the server is restarted, the client should reconnect
3. If the connection is active and no data can be transmited / received for X seconds (link down, router down),
the client should try to reconnect as in the case (1.) (as if the client has never been connected)
It should react in less then 10 seconds.
Unfortunately I can not detect the situation (3.). If I unplug the ethernet while connected, none of my methods is called (ever).
I couldn't find anything like this in the documentation or in the examples.
Here is my testfile:
--------------
from twisted.internet.protocol import Protocol, ReconnectingClientFactory
from twisted.internet import reactor
class Echo(Protocol):
def dataReceived(self, data):
print data
def connectionLost(self, reason):
print 'connection lost', reason
def connectionMade(self):
reactor.callLater(1.0, self.ping)
print 'connection made'
def ping(self, *args):
self.transport.write('test')
reactor.callLater(1.0, self.ping)
class EchoClientFactory(ReconnectingClientFactory):
maxDelay = 3
def startedConnecting(self, connector):
print 'started to connect'
def buildProtocol(self, addr):
print 'connected'
self.resetDelay()
return Echo()
def clientConnectionLost(self, connector, reason):
print 'lost connection', reason
ReconnectingClientFactory.clientConnectionLost(self, connector, reason)
def clientConnectionFailed(self, connector, reason):
print 'connection failed', reason
ReconnectingClientFactory.clientConnectionFailed(self, connector, reason)
reactor.connectTCP('10.10.2.77', 23, EchoClientFactory())
reactor.run()
--------------
regards,
Zoran Bosnjak
More information about the Twisted-Python
mailing list