我需要找一个网站是否花了太长时间才能回复。
例如,我需要将此网站标识为有问题:http://www.lowcostbet.com/
我正在尝试这样的事情:
print urllib.urlopen("http://www.lowcostbet.com/").getcode()
但我得到了Connection timed out
我的目标只是创建一个例程来识别哪些网站需要花费太长时间才能加载。 (例如4秒,并取消请求)
答案 0 :(得分:5)
urlopen有超时参数。
您可以使用以下内容:
from urllib2 import urlopen
TO = 4
website = "http://www.lowcostbet.com/"
try:
response = urlopen(website, timeout=TO)
except:
mark_as_not_responsive(website)
UPD:
请注意,使用我的代码段非常糟糕,因为你会遇到各种异常,而不仅仅是超时。也许,在将网站标记为无响应之前,您需要进行多次尝试。
答案 1 :(得分:0)
另外,requests.get
有一个你可以传入的超时kwarg。
来自文档:
requests.get('http://github.com', timeout=0.001)
这会引发异常,所以你可能想要处理它。
答案 2 :(得分:0)
超时值将应用于连接和读取超时。指定一个元组想要单独设置值:
import requests
try:
r = requests.get('https://github.com', timeout=(6.05, 27))
except requests.Timeout:
...
except requests.ConnectionError:
...
except requests.HTTPError:
...
except requests.RequestException:
...
else:
print(r.text)