[Twisted-web] Custom __del__ not run
    Rasjid Wilcox 
    rasjidw at openminddev.net
       
    Tue Jul 26 03:49:27 MDT 2005
    
    
  
Hello again.
I have my xmlrpc class that I am running in twisted.  I want it to do some 
cleaning up when it is finished, and so I have defined a custom __del__ 
procedure.
However, when mixed with a looping call, it never gets called.  Sample code 
below.  Remove the two lines starting with self.looping, and it all works as 
expected.  Put them in, and the custom __del__ is not called.
Is this a bug in twisted?  Or have I broken some twisted rule about using 
__del__ procedures?  Is there some other way of saying 'when you have stopped 
the reactor, do foo', that twisted would be happy with?
Any suggestions welcome.  :-)
Thanks,
Rasjid
---------------------------------
from twisted.web import xmlrpc
import xmlrpclib
from twisted.internet import reactor, task
class Hello(xmlrpc.XMLRPC):
    def __init__(self):
        print 'Init class Hello'
        # the following two lines cause the custom __del__
        # function to never be called
        self.looping = task.LoopingCall(self.foo)
        self.looping.start(5)
    def __del__(self):
        print 'Tidy up class Hello'
    def foo(self):
        print 'foo!'
    def xmlrpc_hello(self):
        """Return 'hello, world'."""
        return 'hello, world!'
    def xmlrpc_quit(self):
        reactor.callLater(0.1, reactor.stop)
        return 'Shutting down server'
def main():
    from twisted.web import server
    r = Hello()
    reactor.listenTCP(7080, server.Site(r), interface = '127.0.0.1')
    reactor.run()
if __name__ == '__main__':
    main()
-- 
Rasjid Wilcox
Melbourne, Australia (UTC +10 hrs)
    
    
More information about the Twisted-web
mailing list