[Twisted-Python] Issue with calling back deferreds from threads
Andrew Bennetts
andrew-twisted at puzzling.org
Thu Jul 15 01:33:05 EDT 2004
On Wed, Jul 14, 2004 at 07:26:13PM -0400, Bob Ippolito wrote:
>
> On Jul 14, 2004, at 6:27 PM, Ken Kinder wrote:
>
[...]
> >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.
>
> Isn't there a quick way to turn on Twisted's DNS client, so that DNS is
> non-blocking?
There is, although not clearly documented anywhere I know of. It's:
from twisted.names import client
from twisted.internet import reactor
reactor.installResolver(client.theResolver)
If you need a resolver with different behavior to the default (e.g. you want
to tell it to use a specific DNS server), use:
resolver = client.createResolver(servers=[('127.0.0.1', 53)])
reactor.installResolver(resolver)
There's also a ThreadedResolver, which just uses Python's builtin
socket.gethostbyname in a thread. You could install that one with:
reactor.installResolver(client.ThreadedResolver())
-Andrew.
More information about the Twisted-Python
mailing list