Asyncio Python DNS resolver
Project description
aiodnsresolver
Asyncio Python DNS resolver. Pure Python, with no dependencies other than the standard library, threads are not used, and all code is in a single module. The nameservers to query are taken from /etc/resolve.conf
.
Based on https://github.com/gera2ld/async_dns.
Installation
pip install aiodnsresolver
Usage
from aiodnsresolver import Resolver, TYPES
resolve = Resolver()
ip_address = await resolve('www.google.com', TYPES.A)
The IP address returned is an instance of IPv4Address or IPv6Address. Both support conversion to their usual string form by passing them to str
.
Scope
The scope of this project is deliberately restricted to operations that are used to resolve A or AAAA records: to resolve a domain name to one of its IP addresses, and have similar responsibilities to gethostbyname
. Some limited extra behaviour is present/may be added, but great care is taken to prevent scope creep, especially to not add complexity that isn't required to resolve A or AAAA records.
-
UDP queries are made, but not TCP. DNS servers must support UDP, and it's impossible for a single A and AAAA record to not fit into the maximum size of a UDP DNS response, 512 bytes. There may be other data that the DNS server would return in TCP connections, but this isn't required to resolve a domain name to a single IP address.
-
CNAME records are followed transparently.
-
Responses are cached, adhering to their TTL.
-
The resolver is a stub resolver: it delegates the responsibility of recursion to the nameserver(s) it queries. In the vast majority of envisioned use cases this is acceptable, since the nameservers in
/etc/resolve.conf
will be recursive.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for aiodnsresolver-0.0.36-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5faf1cf24c343bd36e3755d44ef1e8dea256679609040e12b747eb1b60cb9ec1 |
|
MD5 | 3c89d9743bcb1116ec17449a244a3a8d |
|
BLAKE2b-256 | 3d972a4ca7fbb5845de976cc2fa5ce84d9025ba6ece9a2f615099132c607e9e3 |