我有一个脚本,它通过以下方式获取DNS(CNAME、MX、NS)数据:
from dns import resolver
...
def resolve_dns(url):
response_dict = {}
print "\nResolving DNS for %s" % (url)
try:
response_dict['CNAME'] = [rdata for rdata in resolver.query(url, 'CNAME')]
except:
pass
try:
response_dict['MX'] = [rdata for rdata in resolver.query(url, 'MX')]
except:
pass
try:
response_dict['NS'] = [rdata for rdata in resolver.query(url, 'NS')]
except:
pass
return response_dict
对连续的URL按顺序调用此函数。如果可能的话,我希望通过同时获取多个url的数据来加快上述过程。在
有没有一种方法可以完成上面脚本对一批URL所做的事情(可能返回dict对象的列表,每个dict对应于特定URL的数据)?在
您可以将工作放入线程池中。您的
resolve_dns
连续执行3个请求,因此我创建了一个稍微更通用的worker,它只执行1个查询,并使用collections.product
生成所有组合。在线程池中,我将chunksize设置为1以减少线程池批处理,如果某些查询需要很长时间,这会增加执行时间。在相关问题 更多 >
编程相关推荐