Python的请求库仅支持连接和读取的超时 http://docs.python-requests.org/en/master/user/advanced/#timeouts
DNS查找需要很长时间时,无法强制超时。我想在超过X秒完成GET请求(包括DNS,连接和读取)时触发超时。
请注意,我不能使用基于信号的方法,因为它仅适用于主线程。
我正在寻找一个优雅的解决方案。
答案 0 :(得分:3)
我不认为可以中断除信号之外的基础getaddrinfo
C标准库函数。
所以恕我直言,你只能用多处理来克服你的问题 - 例如使用timeout_decorator模块的优雅方法:
@timeout_decorator.timeout(5, use_signals=False)
def timed_get(url):
return requests.get(url)
但请记住,这会为每个请求创建一个流程。