Twisted: deferred that fires repeatedly? Twisted: deferred that fires repeatedly? multithreading multithreading

Twisted: deferred that fires repeatedly?


I've set this up for now. For my limited use case it does what I want.

class RepeatedDeferred:    def __init__(self):        self.callbacks = []        self.df = defer.Deferred()    def addCallback(self, callback):        self.callbacks.append(callback)        self.df.addCallback(callback)    def callback(self, res):        self.df.callback(res)        self.df = defer.Deferred()        for c in self.callbacks:            self.df.addCallback(c)

Someone let me know if this is terrible.


What you might be looking for is defer.inlineCallbacks which allows you to use a generator to create a sequential chain of Deferreds. Essentially you could just create a generator that never ends (or ends conditionally) and keep generating Deferreds from that.

There is a great writeup on using inlineCallbacks at krondo.com.