[Twisted-Python] Waiting for multiple events
![](https://secure.gravatar.com/avatar/b3407ff6ccd34c6e7c7a9fdcfba67a45.jpg?s=120&d=mm&r=g)
I have a collection of Deferreds. When they all complete, I want to trigger a "all complete" callback (probably via a Deferred). Alternatively, upon an error from any of the callbacks, I want to trigger the errback of that "all complete" Deferred. Is there something already written to do this? Or do I need to write it myself? -Andrew.
![](https://secure.gravatar.com/avatar/433365de0f787faa3ed3e6dd1da5884f.jpg?s=120&d=mm&r=g)
Andrew Bennetts wrote:
# this code is untested class WaitForCallbacks: def __init__(self, count, finishedDeferred): self.count = count self.callbacks = 0 self.finishedDeferred = finishedDeferred def callback(self, result): self.callbacks = self.callbacks + 1 if self.callbacks == self.count: self.finishedDeferred.callback(result) return result def errback(self, err): self.finishedDeferred.errback(err) # then you make an instance of this class: o = WaitForCallbacks(5, allComplete) # any deferred D we want to connect, we do: D.addCallbacks(o.callback, o.errback)
![](https://secure.gravatar.com/avatar/433365de0f787faa3ed3e6dd1da5884f.jpg?s=120&d=mm&r=g)
Andrew Bennetts wrote:
# this code is untested class WaitForCallbacks: def __init__(self, count, finishedDeferred): self.count = count self.callbacks = 0 self.finishedDeferred = finishedDeferred def callback(self, result): self.callbacks = self.callbacks + 1 if self.callbacks == self.count: self.finishedDeferred.callback(result) return result def errback(self, err): self.finishedDeferred.errback(err) # then you make an instance of this class: o = WaitForCallbacks(5, allComplete) # any deferred D we want to connect, we do: D.addCallbacks(o.callback, o.errback)
participants (2)
-
Andrew Bennetts
-
Itamar Shtull-Trauring