确定网站是否需要花费太长时间才能做出回应

时间:2015-10-23 14:33:58

标签: python python-2.7

我需要找一个网站是否花了太长时间才能回复。

例如,我需要将此网站标识为有问题:http://www.lowcostbet.com/

我正在尝试这样的事情:

print urllib.urlopen("http://www.lowcostbet.com/").getcode() 

但我得到了Connection timed out

我的目标只是创建一个例程来识别哪些网站需要花费太长时间才能加载。 (例如4秒,并取消请求)

3 个答案:

答案 0 :(得分:5)

来自urllib2包的

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)

这会引发异常,所以你可能想要处理它。

http://docs.python-requests.org/en/latest/user/quickstart/

答案 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)