Skip to content

Instantly share code, notes, and snippets.

@powdahound
Created October 15, 2009 16:13
Show Gist options
  • Save powdahound/211060 to your computer and use it in GitHub Desktop.
Save powdahound/211060 to your computer and use it in GitHub Desktop.
Looking for a cleaner way to implement this pattern.
def do_stuff():
"""Does 3 things in serial"""
def cb_stuff1(unused):
print 'Doing stuff #1'
deferreds = []
for obj in self.objects.values():
deferreds.append(obj.do_something())
return defer.DeferredList(deferreds)
def cb_stuff2(unused):
print 'Doing stuff #2'
deferreds2 = []
for obj in self.objects.values():
deferreds2.append(obj.do_something_else())
return defer.DeferredList(deferreds2)
def cb_stuff3(unused):
print 'Doing stuff #3'
return some_other_action()
d = defer.Deferred()
d.addCallback(cb_stuff1)
d.addCallback(cb_stuff2)
d.addCallback(cb_stuff3)
d.callback(True) # just to trigger the chain
return d
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment