Python 将超时传递给socket.getaddrinfo

Python 将超时传递给socket.getaddrinfo,python,dns,timeout,Python,Dns,Timeout,假设我正在用Python编写HTTP请求,我的DNS服务器关闭了 如果我尝试: import requests requests.get('https://api.twilio.com', timeout=3) 并且DNS服务器关闭,这可能需要90秒以上,尽管指定了超时值 此外,阻塞调用是socket.getaddrinfo,它看起来不需要超时参数 有没有办法在DNS查找上设置超时 无法向getaddrinfo系统调用传递超时,因为它不接受超时参数。您可以在线程中运行查找,然后在过期时取消它

假设我正在用Python编写HTTP请求,我的DNS服务器关闭了

如果我尝试:

import requests
requests.get('https://api.twilio.com', timeout=3)
并且DNS服务器关闭,这可能需要90秒以上,尽管指定了超时值

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

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

无法向getaddrinfo系统调用传递超时,因为它不接受超时参数。您可以在线程中运行查找,然后在过期时取消它


在Unix机器上,您可以将
/etc/resolv.conf
修改为。

getaddrinfo
不是一个系统调用,它只是一个库函数,由POSIX定义,通常由C标准库(例如glibc)实现。