Dnspython:设置查询超时/生命周期
我有一个小脚本,它会检查一大堆域名的MX记录,一切运行得很好,但当脚本遇到一个没有记录的域名时,跳到下一个域名的时间就会很长。
我试着添加了:
query.lifetime = 1.0
or
query.timeout = 1.0
但是这似乎没有什么效果。有没有人知道这个设置是怎么配置的?
我的脚本在下面,感谢你的时间。
import dns.resolver
from dns.exception import DNSException
import dns.query
import csv
domains = csv.reader(open('domains.csv', 'rU'))
output = open('output.txt', 'w')
for row in domains:
try:
domain = row[0]
query = dns.resolver.query(domain,'MX')
query.lifetime = 1.0
except DNSException:
print "nothing here"
for rdata in query:
print domain, " ", rdata.exchange, 'has preference', rdata.preference
output.writelines(domain)
output.writelines(",")
output.writelines(rdata.exchange.to_text())
output.writelines("\n")
1 个回答
28
你是在执行查询之后才设置超时时间,这样是没用的!
你应该先创建一个 Resolver
对象,设置好它的超时时间,然后再调用它的 query()
方法。dns.resolver.query()
其实只是一个方便的函数,它会自动创建一个默认的 Resolver
对象并调用它的 query()
方法。如果你不想用默认的 Resolver
,那就得手动来做这些。
resolver = dns.resolver.Resolver()
resolver.timeout = 1
resolver.lifetime = 1
然后在你的循环中使用这个:
try:
domain = row[0]
query = resolver.resolve(domain,'MX')
except:
# etc.
你应该可以用同一个 Resolver
对象来处理所有的查询。