I have an Twisted client app that makes hundreds of connections per minute. I discover that I have a memory leak un my app and I'm almost sure that is related to the ClientFactory() derived class that is never deleted.
I reproduce the problem with a modification of Echo client example from Twisted documentation: from twisted.internet.protocol import Protocol, ClientFactory from twisted.internet import reactor from twisted.internet.task import LoopingCall from sys import stdout class Echo(Protocol): def connectionMade(self): print 'MADE' self.transport.write('XXXX') def dataReceived(self, data): print 'RECV', data self.transport.loseConnection() def __del__(self): print 'DEL PROTOCOL' class EchoClientFactory(ClientFactory): def startedConnecting(self, connector): print 'Started to connect.' def buildProtocol(self, addr): print 'Connected.' return Echo() def clientConnectionLost(self, connector, reason): print 'Lost connection. Reason:', reason def clientConnectionFailed(self, connector, reason): print 'Connection failed. Reason:', reason def __del__(self): print 'DEL FACTORY' def connector(): print 'CONNECTOR' factory = EchoClientFactory() reactor.connectTCP('localhost', 7, factory) #reactor.callLater(2, connector) register_loop = LoopingCall(connector) register_loop.start(1) reactor.run() With this code I discover that the instances of EchoClientFactory() are only deleted when the program shutdowns. They are not deleted when the connections finish. I haven't found in the documentation if I need to do some to get factory instances deleted. -- Diego Woitasen _______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python