summaryrefslogtreecommitdiff
path: root/examples/ddr.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/ddr.py')
-rw-r--r--examples/ddr.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/examples/ddr.py b/examples/ddr.py
new file mode 100644
index 0000000..a8ecd9a
--- /dev/null
+++ b/examples/ddr.py
@@ -0,0 +1,42 @@
+#!/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)