首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Dnspython:设置查询超时/生存期

Dnspython:设置查询超时/生存期
EN

Stack Overflow用户
提问于 2012-01-24 23:31:36
回答 1查看 18.8K关注 0票数 10

我有一个小脚本,检查他们的MX记录的域名大列表,一切正常,但当脚本找到一个没有记录的域名,它需要相当长的时间跳到下一个。

我尝试添加以下内容:

代码语言:javascript
运行
复制
query.lifetime = 1.0
or
query.timeout = 1.0

但这似乎没有任何作用。有人知道此设置是如何配置的吗?

我的脚本如下,感谢您的宝贵时间。

代码语言:javascript
运行
复制
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")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-24 23:53:52

您将在执行完查询后设置超时。所以这不会有任何作用!

相反,您要做的是创建一个Resolver对象,设置它的超时,然后调用它的query()方法。dns.resolver.query()只是一个方便的函数,它实例化一个默认的Resolver对象并调用它的query()方法,所以如果您不需要默认的Resolver,则需要手动执行此操作。

代码语言:javascript
运行
复制
resolver = dns.resolver.Resolver()
resolver.timeout = 1
resolver.lifetime = 1

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

代码语言:javascript
运行
复制
try:
    domain = row[0]
    query = resolver.query(domain,'MX')
except:
    # etc.

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

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8989457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档