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()方法,因此如果您不想要默认的Resolver,则需要手动执行此操作。

resolver = dns.resolver.Resolver()
resolver.timeout = 1
resolver.lifetime = 1

然后在你的循环中使用这个:

try:
    domain = row[0]
    query = resolver.resolve(domain,'MX')
except:
    # etc.

您应该能够对所有查询使用相同的Resolver对象。

最新更新