1 from twisted.internet import defer
3 # utility wrapper for DeferredList
4 def _check_deferred_list(results):
5 # if any of the component Deferreds failed, return the first failure such
6 # that an addErrback() would fire. If all were ok, return a list of the
7 # results (without the success/failure booleans)
8 for success,f in results:
11 return [r[1] for r in results]
12 def DeferredListShouldSucceed(dl):
13 d = defer.DeferredList(dl)
14 d.addCallback(_check_deferred_list)
17 def _parseDListResult(l):
18 return [x[1] for x in l]
20 def _unwrapFirstError(f):
21 f.trap(defer.FirstError)
22 raise f.value.subFailure
24 def gatherResults(deferredList):
25 """Returns list with result of given Deferreds.
27 This builds on C{DeferredList} but is useful since you don't
28 need to parse the result for success/failure.
30 @type deferredList: C{list} of L{Deferred}s
32 d = defer.DeferredList(deferredList, fireOnOneErrback=True, consumeErrors=True)
33 d.addCallbacks(_parseDListResult, _unwrapFirstError)