异步连接到套接字意外失败



我正在尝试使用以下代码通过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

whois 服务器几乎可以肯定是限制您的速率的。并非所有 whois 服务器都可以从单个 IP 地址扩展到 1000 个并发连接。

进一步限制速率、降低信号量限制或切换到漏水的存储桶速率限制器。

或者,寻找提供更高查询率选项的 whois API 提供商,或者更好的是,支持批量查询。

最新更新