Chr*_*ong 9 python timeout dnspython lifetime
我有一个小脚本,检查大量的域列表中的MX记录,一切正常,但是当脚本找到没有记录的域时,跳转到下一个域需要很长时间.
我试过添加:
query.lifetime = 1.0
or
query.timeout = 1.0
Run Code Online (Sandbox Code Playgroud)
但这似乎没有做任何事情.有谁知道如何配置此设置?
我的脚本在下面,谢谢你的时间.
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")
Run Code Online (Sandbox Code Playgroud)
kin*_*all 19
您已经执行了查询后设置了超时.所以这不会做任何事情!
你想要做的是创建一个Resolver对象,设置它的超时,然后调用它的query()方法.dns.resolver.query()它只是一个实例化默认Resolver对象并调用其query()方法的便捷函数,因此如果您不想使用默认对象,则需要手动执行此操作Resolver.
resolver = dns.resolver.Resolver()
resolver.timeout = 1
resolver.lifetime = 1
Run Code Online (Sandbox Code Playgroud)
然后在你的循环中使用它:
try:
domain = row[0]
query = resolver.query(domain,'MX')
except:
# etc.
Run Code Online (Sandbox Code Playgroud)
您应该能够Resolver为所有查询使用相同的对象.
| 归档时间: |
|
| 查看次数: |
14152 次 |
| 最近记录: |