[Twisted-Python] Issue with calling back deferreds from threads
Ken Kinder
ken at kenkinder.com
Wed Jul 14 18:27:43 EDT 2004
Introduced in one of the recent versions of Twisted was a patch
described here. I'm cc'ing itamar because he created the patch:
http://twistedmatrix.com/pipermail/twisted-commits/2003-November/010059.html
This makes sure you can't callback with Deferred objects. However, some
of my code depends on doing just that because of the blocking DNS issue:
def mymethod(*args):
def go(*args):
return xmlproxy.callRemote(*args)
twisted.internet.threads.deferToThread(go)
As you can see, I'm deferring something that should not be blocking to a
thread. The purpose for doing so is that sometimes resolving the
hostname can take a while for this call. (Unrelated document issue with
Twisted: DNS is blocking.) So, in this case, it is desirable (although
hackish) to defer the creation of a deferred object to a thread, and
itamar's patch prevents this process.
One option I have is to make go() blocking, but that will hold a thread
open for longer than is necessary. Another option is to comment out the
assertion, but that's probably not a good idea. Until the DNS blocking
issue is resolved, I'm not sure how to solve this one.
Suggestions?
Thanks
Ken
More information about the Twisted-Python
mailing list