小编Eni*_*czz的帖子

使用 asyncio 和 dnspython 异步发送 DNS 查询

假设我想使用 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 不适用于我的情况。

任何参考和想法都会有所帮助。

python dns dnspython coroutine python-asyncio

3
推荐指数
1
解决办法
3848
查看次数

标签 统计

coroutine ×1

dns ×1

dnspython ×1

python ×1

python-asyncio ×1