Here is the server code if you want to have a test: from twisted.internet.protocol import Protocol from twisted.internet.protocol import Factory from twisted.internet import reactor
class Echo(Protocol): def __init__(self, factory): self.factory = factory def connectionMade(self): print 'MADE' def connectionLost(self, reason): print 'LOST' def dataReceived(self, data): self.transport.write(data) class EchoFactory(Factory): def buildProtocol(self, addr): return Echo(self) reactor.listenTCP(8007, EchoFactory()) reactor.run() Thanks! On Tue, Jan 22, 2013 at 10:06 AM, Diego Woitasen <di...@woitasen.com.ar> wrote: > 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 -- Diego Woitasen _______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python