[Twisted-Python] Adding callback to a Deferred that's already running?
sflist at ihonk.com
Thu Aug 26 00:34:49 EDT 2004
I've got an XML-RPC app that has to grab some data from a SQL database, then
depending on the results, make some more SQL calls, make some more decisions,
then finally return a result. So, I'm hip-deep in Deferreds. So, here's the
idiom I've come up with, and I'm running into a limitation with it, namely
that I can't seem to add callbacks to a Deferred after it has started
running. Here's what I'm doing in abbreviated form, and it's an idiom I'd
like to stick with, if possible:
self.db = adbapi.ConnectionPool(blah)
return FooClass(self.db).step1() # This returns a deferred, see below
def __init__(self, db):
self.db = db
self.d = self.db.runQuery(blah)
def step2(self, query):
if query == 'yadda':
return 'This bit works'
def step3(self, data):
return "Never gets here!"
If I get to the part where it adds the callback for step3, it ends up giving
an AlreadyCalled exception in Deferred. So, I expect there's a good way to
add to a running Deferred, no?
More information about the Twisted-Python