Name Resolution (DNS)

gevent includes support for a pluggable hostname resolution system. Pluggable resolvers are (generally) intended to be cooperative. This pluggable resolution system is used automatically when the system is monkey patched, and may be used manually through the resolver attribute of the gevent.hub.Hub or the corresponding methods in the gevent.socket module.

A resolver implements the 5 standandard functions from the socket module for resolving hostnames and addresses:


gevent includes four implementations of resolvers, and applications can provide their own implementation. By default, gevent uses gevent.resolver.thread.Resolver.

Configuration can be done through the GEVENT_RESOLVER environment variable. Specify ares, thread, dnspython, or block to use the gevent.resolver.ares.Resolver, gevent.resolver.thread.Resolver, or gevent.resolver.dnspython.Resolver, or gevent.resolver.blocking.Resolver, respectively, or set it to the fully-qualified name of an implementation of the standard functions.

Please see the documentation for each resolver class to understand the relative performance and correctness tradeoffs.

Next page: gevent.resolver.blocking – Non-cooperative resolver