urllib.request.url没有互联网的打开超时

时间:2018-08-21 04:37:03

标签: python python-3.x request urllib urlopen

urllib.request.urlopen有一个timeout选项。但是,当我的互联网中断时,该选项似乎不起作用。

import urllib
urllib.request.urlopen(url, timeout=1)

挂起并最终放弃

URLError: <urlopen error [Errno -3] Temporary failure in name resolution>

我的网络中断时如何设置超时时间?

2 个答案:

答案 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系统上有效。