[Twisted-Python] Chaining deferreds with DeferredList

Tsai Li Ming mailinglist at ltsai.com
Sat Nov 13 10:28:17 EST 2004


How do I chain a deferred object with multiple deferred objects within a 
single function call?

I'm trying to wait for all the deferred to fire before triggering the 
foo function. How can I chain up the multiple deferreds in the FOR loop?

for k in keys:
     where = [("pk_col",reflector.EQUAL,k)]
     d = mt.loadObjectsFrom("table",whereClause=where)
     d.addCallback(cbTable)
     d.addErrback(ebTable)
     defer_list.append(d)

dl = defer.DeferredList(defer_list)
dl.addCallback(foo)

def foo(result):
     print result
     reactor.stop()

def cbTable(rows):

     mt  = sqlreflector.SQLReflector(dbpool, [commentRow])
     if rows:
         for r in rows:
             d = mt.deleteRow(c)
             d.addCallback(cbDelete)
             d.addErrback(ebDelete)
     else:
         d = delete()

     return d


def cbDelete(result):
     d = delete() # Returns a deferred
     return d


Thanks,
Liming





More information about the Twisted-Python mailing list