Python urllib.request.urlopen超时,不带internet
Python urllib.request.urlopen超时,不带internet,python,python-3.x,request,urllib,urlopen,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> URLError: 当我的互联网断开时,我怎么能强制超时?这可不是小事。您有一个DNS超时
urllib.request.urlopen
有一个timeout
选项。然而,当我的互联网关闭时,这个选项似乎不起作用
import urllib
urllib.request.urlopen(url, timeout=1)
悬而未决,最终放弃
URLError: <urlopen error [Errno -3] Temporary failure in name resolution>
URLError:
当我的互联网断开时,我怎么能强制超时?这可不是小事。您有一个DNS超时,因为您的系统无法确定如何处理给定的URL。然而,正如David Murray在这里指出的,这是python无法控制的: 您可能希望使用此自定义超时实现:您可以阅读此内容。它很好地解释了当前的
timeout
是一个非常模糊的概念。即使在声称“为人类”的请求中,timeout
也不是真正为人类
在您的情况下,名称解析是http连接之前的一个预处理过程,但timeout
仅适用于http和ftp连接
要获得一致的超时行为
,我想最好的方法是使用线程。您也可以使用signal.alarm
,但它只适用于UNIX系统。谢谢您提供的链接。似乎没有一个好的解决办法。