[Twisted-Python] getting all results from DeferredList
Pet
petshmidt at googlemail.com
Wed Jun 30 10:41:38 EDT 2010
Hello,
I'm trying to process results from several Deferreds (d1, d2) with
DeferredList, merging it into one list and sending back to client.
While merging works, the client has no results. What is the way to do
tasks (db queries in my case) in parallel and then merge results?
BTW, are nested runInteraction ok?
Thanks for help!
Pet
class Test:
def __init__(self, cursor):
self.cursor = cursor
def test(db, params):
if params.get('query'):
params['q'] = self.someFunc3(db, params)
def processResults(results, out):
#merge results into one
for _, r in results:
out.extend(r)
return out
out = []
d1 = self.cursor.runInteraction(self.someFunc, params)
d2 = self.cursor.runInteraction(self.someFunc2, params)
d = DeferredList([d1,d2])
d.addCallback(processResults, out)
d.addErrback(log.err)
return d
class XMLRPCProtokoll(xmlrpc.XMLRPC):
def __init__(self):
self.db = adbapi.ConnectionPool()
xmlrpc.XMLRPC.__init__(self, True)
def xmlrpc_test(self, param):
t = Test(self.db)
return self.db.runInteraction(t.test, param)
More information about the Twisted-Python
mailing list