powdahound (owner)

Revisions

gist: 211060 Download_button fork
public
Description:
Looking for a cleaner way to implement this pattern.
Public Clone URL: git://gist.github.com/211060.git
Embed All Files: show embed
deferred_chain.py #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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