编程语言
首页 > 编程语言> > DnsPython:设置查询超时/生存时间

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.query(domain,'MX')
except:
    # etc.

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

标签:python,lifetime,timeout,dnspython
来源: https://codeday.me/bug/20191010/1887358.html