[Twisted-Python] How to detect dead client connections in twisted

Alvin Delagon adelagon at gmail.com
Sun Jun 1 22:41:33 EDT 2008


I've been using xmlstream for quite sometime now and I noticed one such
problem where my server doesn't detect clients that went to hardware
shutdown without closing the socket. I also reproduced it using a simple
twisted TCP server:

#!/usr/bin/python
from twisted.internet import protocol
from twisted.internet import reactor

class EchoProtocol(protocol.Protocol):
    def __init__(self):
        pass

    def connectionMade(self):
        print "Client Connected Detected!"

    def connectionLost(self, reason):
        print "Client Connection Lost!"

    def dataReceived(self, data):
        self.transport.write(data)


factory = protocol.Factory()
factory.protocol = EchoProtocol
reactor.listenTCP(8000, factory)
reactor.run()

Using a different machine, telnet to the echo server and then shut down the
computer (without exiting telnet). It seems that the connectionLost function
doesn't get called. I even had an XMPP account appeared online on our XMPP
server for almost three days even though I shut down the PC hosting my
client. Should we implement a Hearbeat functionality? Thank you in advance!

Alvin Delagon

-- 
http://www.alvinatorsplayground.blogspot.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://twistedmatrix.com/pipermail/twisted-python/attachments/20080602/494bf05c/attachment.htm 


More information about the Twisted-Python mailing list