【发布时间】:2017-08-20 08:52:31
【问题描述】:
我正在使用dnspython 查询一堆 DNS 记录,当没有收到回复 (dns.exception.Timeout: The DNS operation timed out after 30.0006685256958 seconds) 时似乎超时。
函数如下:
def dnstest(domain):
dnsrecords = []
record_types = ['A', 'AAAA', 'CNAME', 'MX', 'SRV', 'TXT', 'SOA', 'NS']
dnsResolver = dns.resolver.Resolver()
for record in record_types:
dnsAnswer = dnsResolver.query(domain, record)
for rdata in dnsAnswer:
dnsrecords.append(rdata)
return(dnsrecords)
print(dnstest("github.com"))
然而,如果我查询存在的 DNS 记录,则会收到答案:dnsAnswer = dnsResolver.query(domain, 'A')
我猜这是因为github.com 不存在某些记录(例如SRV、AAAA 等)。但是,它们确实存在于其他域中。有没有办法可以在 for 循环中包含每个查询的超时(例如 5 秒)?
像 -if no response in 5 seconds, move to next element in the array
或者有没有更好的方法来排除不存在的记录?
【问题讨论】:
标签: python-2.7 python-3.x dns dnspython