urllib.request.urlopen
有一个timeout
选项。但是,当我的互联网中断时,该选项似乎不起作用。
import urllib
urllib.request.urlopen(url, timeout=1)
挂起并最终放弃
URLError: <urlopen error [Errno -3] Temporary failure in name resolution>
我的网络中断时如何设置超时时间?
答案 0 :(得分:2)
那不是小事。您的DNS超时,因为您的系统无法确定如何处理给定的URL。但是,正如David Murray在此处指出的那样,这已不受python的控制:https://bugs.python.org/issue22889
您可能想使用此自定义超时实现:Timeout function if it takes too long to finish
答案 1 :(得分:0)
您可以阅读此post。它很好地说明了当前 ua = UserAgent()
userAgent = ua.random
print(userAgent)
chrome_options.add_argument('user-agent={userAgent}')
是一个非常模糊的概念。即使在声称{for human}的timeout
中,requests
也不是真正的人类。
对于您来说,名称解析是在http连接之前进行的预处理,但是timeout
仅适用于http和ftp连接。
要获得timeout
的一致行为,我猜最好的方法是使用线程。或者,您可以使用timeout
,但它仅在UNIX系统上有效。