File: //usr/share/doc/python3-dns/examples/ddr.py
#!/usr/bin/env python3
# Using Discovery of Designated Resolvers (synchronous I/O)
import dns.resolver
res = dns.resolver.Resolver(configure=False)
res.nameservers = ["1.1.1.1"]
# Invoke try_ddr() to attempt to upgrade the connection via DDR
res.try_ddr()
# Do a sample resolution
for rr in res.resolve("www.google.com", "A"):
print(rr.address)
# Note that the nameservers have been upgraded
print(res.nameservers)
# Using Discovery of Designated Resolvers (asynchronous I/O)
# We show using asyncio, but if you comment out asyncio lines
# and uncomment the trio lines, it will work with trio too.
import asyncio
# import trio
import dns.asyncresolver
async def amain():
res = dns.asyncresolver.Resolver(configure=False)
res.nameservers = ["8.8.8.8"]
await res.try_ddr()
for rr in await res.resolve("www.google.com", "A"):
print(rr.address)
print(res.nameservers)
asyncio.run(amain())
# trio.run(amain)