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")
问题答案:
执行查询 后, 您要设置超时时间。所以那什么也做不了!
您要做的是创建一个Resolver
对象,设置 其
超时时间,然后调用其query()
方法。dns.resolver.query()
只是一个便捷函数,它实例化默认Resolver
对象并调用其query()
方法,因此如果您不想使用default,则需要手动进行操作Resolver
。
resolver = dns.resolver.Resolver()
resolver.timeout = 1
resolver.lifetime = 1
然后在循环中使用它:
try:
domain = row[0]
query = resolver.query(domain,'MX')
except:
# etc.
您应该能够Resolver
对所有查询使用相同的对象。