我正在尝试使用以下代码通过whois查找约10,000个域。
async def lookup(server, port, query, sema):
async with sema as sema:
try:
reader, writer = await asyncio.open_connection(server, port)
except:
return {}
writer.write(query.encode("ISO-8859-1"))
await writer.drain()
data = b""
while True:
d = await reader.read(4096)
if not d:
break
data += d
writer.close()
data = data.decode("ISO-8859-1")
return data
但是,我反复遇到错误“连接失败”。如果我尝试一次查找,则将通过检查,这意味着Whois服务器已启动。我还将ulimit增加到10,000,但每次使用信号灯的查询次数都只能限制为1000。
答案 0 :(得分:1)
whois服务器几乎肯定会限制您的速率。并非所有的whois服务器都可以从单个IP地址扩展到1000个并发连接。
进一步限制您的速率,降低信号量限制或切换到leaky bucket rate limiter。
或者,找到一个提供更高查询率选项或者更好地支持批量查询的whois API提供程序。