skip to navigation
skip to content

aiodns 1.1.0

Simple DNS resolver for asyncio

Simple DNS resolver for asyncio

.. image::

aiodns provides a simple way for doing asynchronous DNS resolutions
with a synchronous looking interface by using `pycares <https:"" saghul="" pycares="">`_.



import asyncio
import aiodns

loop = asyncio.get_event_loop()
resolver = aiodns.DNSResolver(loop=loop)
f = resolver.query('','A')
result = loop.run_until_complete(f)

The following query types are supported: A, AAAA, CNAME, MX, NAPTR, NS, PTR, SOA, SRV, TXT.

The library supports both *asyncio* and *Trollius*.

If you use Python 3 you may use `yield from` statement::

def func():
result = yield from resolver.query('','A')

For Trollius you should use another syntax like::

def func():
result = yield trollius.From(resolver.query('','A'))


The API is pretty simple, three functions are provided in the ``DNSResolver`` class:

* ``query(host, type)``: Do a DNS resolution of the given type for the given hostname. It returns an
instance of ``asyncio.Future``. The actual result of the DNS query is taken directly from pycares.
As of version 1.0.0 of aiodns (and pycares, for that matter) results are always namedtuple-like
objects with different attributes. Please check `the documentation <http:"" en="" latest="""">`_
for the result fields.
* ``gethostbyname(host, socket_family)``: Do a DNS resolution for the given
hostname and the desired type of address family (i.e. ``socket.AF_INET``).
While ``query()`` always performs a request to a DNS server,
``gethostbyname()`` first looks into ``/etc/hosts`` and thus can resolve
local hostnames (such as ``localhost``). Please check `the documentation
<http:"" en="" latest="""">`_
for the result fields. The actual result of the call is a ``asyncio.Future``.
* ``cancel()``: Cancel all pending DNS queries. All futures will get ``DNSError`` exception set, with

Running the test suite

To run the test suite: ``python``


Saúl Ibarra Corretgé <>


aiodns uses the MIT license, check LICENSE file.

Python versions

Python >= 3.4 is natively supported. Python 3.3 supported using the `asyncio package <https:"" pypi="" asyncio="">`_.
Older Python versions(2.6 - 3.2) are supported using `trollius <https:"" pypi="" trollius="">`_.


If you'd like to contribute, fork the project, make a patch and send a pull
request. Have a look at the surrounding code and please, make yours look
alike :-)

File Type Py Version Uploaded on Size
aiodns-1.1.0-py2.py3-none-any.whl (md5) Python Wheel py2.py3 2016-08-27 6KB
aiodns-1.1.0.tar.gz (md5) Source 2016-08-27 5KB