[Twisted-Python] Deferred question
Gabriel Rossetti
gabriel.rossetti at arimaz.com
Tue Dec 9 02:09:10 MST 2008
Gabriel Rossetti wrote:
> Hello everyone,
>
> I have a question concerning defers, I have a service that needs to
> query IO until it answers. The IO can be disconnected, connected but
> off, connected and on; depending on the state I get different
> exceptions. I wrote something like :
>
> def __requestId(self, _):
> d = self.callPlugin(PLUGIN_NAME)
> d.addCallback(self.__receivedAns)
> d.addErrback(self.__requestId)
>
> The plugin makes the request in a thread and the deferred is returned
> and called when either an answer is received or am exception is raised
> (e.g. timeout, missing hardware, etc)
>
> This seams to work well, except that when I let the system run for a
> long time without the hardware being present or off (several
> hours/days) the memory consumption goes way up. I don' t really know
> what is causing this, and I'm looking for possible reasons, so I was
> wondering if maybe this could be what is causing the problem. It's
> probably not that, because from what I understand it works like this :
>
> 1. the first request is made
> 2. there is a timeout or something that raises the exception
> 3. the errback gets called
> 4. it makes a new request
> 5. the deferred gets garbage collected
> 6. the new request follows the same path
>
> Can anyone confirm that this is correct, or are my defers somehow
> staying alive and not being garbage collected?
>
> Thank you,
> Gabriel Rossetti
>
Forget it, I monkey-patched defer.Deferred to add __del__ to see if it
was called, and it was, so they are getting destroyed...
More information about the Twisted-Python
mailing list