将超时传递给 socket.getaddrinfo

Kev*_*rke 4 python dns timeout

假设我正在用 Python 编写 HTTP 请求并且我的 DNS 服务器出现故障。

如果我尝试:

import requests
requests.get('https://api.twilio.com', timeout=3)
Run Code Online (Sandbox Code Playgroud)

并且 DNS 服务器已关闭,这可能需要 90 秒以上的时间,尽管指定了超时值。

此外,阻塞调用是socket.getaddrinfo,它看起来不像这需要超时参数。

有没有办法在 DNS 查找中设置超时?

Kev*_*rke 7

没有办法通过一个超时到的getaddrinfo系统调用,因为它不接受超时参数。您可以在线程中运行查找,然后在它过期时取消它。

在Unix机器上,你可以修改/etc/resolv.conf,以设置超时addrinfo中查找