asyncio的简单DNS解析器
项目描述
aiodns提供了一个简单的方法来进行异步DNS解析,使用pycares。
示例
import asyncio
import aiodns
loop = asyncio.get_event_loop()
resolver = aiodns.DNSResolver(loop=loop)
async def query(name, query_type):
return await resolver.query(name, query_type)
coro = query('google.com', 'A')
result = loop.run_until_complete(coro)
以下查询类型受支持:A,AAAA,ANY,CAA,CNAME,MX,NAPTR,NS,PTR,SOA,SRV,TXT。
API
API非常简单,在DNSResolver类中提供了三个函数
query(host, type):对给定主机名进行给定类型的DNS解析。它返回一个asyncio.Future实例。实际的DNS查询结果直接来自pycares。从aiodns(以及pycares)的1.0.0版本开始,结果始终是具有不同属性的namedtuple-like对象。请参阅文档以获取结果字段。
gethostbyname(host, socket_family):对给定的主机名和期望的地址族类型(例如 socket.AF_INET)进行DNS解析。在调用 query() 时始终向DNS服务器发送请求,而 gethostbyname() 则首先检查 /etc/hosts,因此可以解析本地主机名(如 localhost)。请查看 文档 了解结果字段。实际调用结果为 asyncio.Future。
gethostbyaddr(name):对地址进行反向查找。
cancel():取消所有挂起的DNS查询。所有future都将设置 DNSError 异常,errno为 ARES_ECANCELLED。
Windows用户注意事项
此库需要asyncio循环为 SelectorEventLoop,从Python 3.8开始,Windows上不是默认的。
默认设置可以按如下方式更改(在您的应用程序中非常早期执行此操作)
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
这可能会对您代码库的其他部分产生其他影响,因此请务必彻底测试。
运行测试套件
要运行测试套件: python tests.py
许可证
aiodns使用MIT许可证,请查看LICENSE文件。
Python版本
支持Python >= 3.6。
贡献
如果您想贡献,请Fork项目,制作补丁并提交pull request。请查看周围的代码,并确保您的代码看起来相似 :-)
项目详情
下载文件
为您的平台下载文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分发
构建分发
aiodns-3.2.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 62869b23409349c21b072883ec8998316b234c9a9e36675756e8e317e8768f72 |
|
MD5 | 0bfcd1b040912744badd2771a33a32fc |
|
BLAKE2b-256 | e78441a6a2765abc124563f5380e76b9b24118977729e25a84112f8dfb2b33dc |