假设我想使用 dnspython 为 Alexa 前 100 万站点发送各种类型的 DNS 查询(A、AAAA、NS、SOA、DNSKEY、NSEC3、DS 等)。
一项一项地执行此操作会花费一点时间,因为我要为每个站点发送多个查询。所以我希望在 python 3 中使用 asyncio 执行一些并行操作。
我经历了大卫的生成器/协程三部曲,http://www.dabeaz.com/talks.html,但我仍然不确定如何完成我的简单任务......
进一步来说,
results = dns.resolver.query('google.com','AAAA')
Run Code Online (Sandbox Code Playgroud)
是一个阻塞函数调用,等待 DNS 回复返回。
如何在这段等待时间内发送其他查询而不使用线程?由于 DNS 查询通常是 udp 数据包,因此我认为 asyncio 可能会有所帮助。
pycares 似乎不支持我需要的所有记录类型,因此 pycares 和 aiodns 不适用于我的情况。
任何参考和想法都会有所帮助。