我有一个小脚本,检查他们的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")
发布于 2012-01-24 23:53:52
您将在执行完查询后设置超时。所以这不会有任何作用!
相反,您要做的是创建一个Resolver
对象,设置它的超时,然后调用它的query()
方法。dns.resolver.query()
只是一个方便的函数,它实例化一个默认的Resolver
对象并调用它的query()
方法,所以如果您不需要默认的Resolver
,则需要手动执行此操作。
resolver = dns.resolver.Resolver()
resolver.timeout = 1
resolver.lifetime = 1
然后在你的循环中使用这个:
try:
domain = row[0]
query = resolver.query(domain,'MX')
except:
# etc.
您应该能够对所有查询使用相同的Resolver
对象。
https://stackoverflow.com/questions/8989457
复制相似问题