使用Python请求测量网站加载时间

时间:2012-06-22 15:48:08

标签: python networking delay python-requests timeit

我正在尝试构建一个测试我的互联网连接延迟的工具,更具体地说是网站加载时间。我想过将python requests模块用于加载部分。

问题是,它没有内置功能来衡量获得完整响应所需的时间。为此,我想我会使用timeit模块。

我不确定的是,如果我像这样运行timeit:

t = timeit.Timer("requests.get('http://www.google.com')", "import requests")

我是否真的在测量响应到达的时间,还是需要构建,发送,接收等等的时间?我猜我可能会忽略那个超时时间,因为我正在测试延迟很长的网络(约700毫秒)?

有没有更好的方法以编程方式执行此操作?

3 个答案:

答案 0 :(得分:156)

最新版本的请求中有这样的功能:

http://docs.python-requests.org/en/latest/api/?highlight=elapsed#requests.Response.elapsed

例如:

requests.get("http://127.0.0.1").elapsed.total_seconds()

答案 1 :(得分:26)

至于你的问题,它应该是

的总时间
  1. 创建请求对象的时间
  2. 发送请求
  3. 收到回复
  4. 解析回应(见Thomas Orozco的评论)
  5. 衡量单个请求加载时间的其他方法是使用urllib:

    nf = urllib.urlopen(url)
    start = time.time()
    page = nf.read()
    end = time.time()
    nf.close()
    # end - start gives you the page load time
    

答案 2 :(得分:1)

response.elapsed 返回一个 timedelta 对象,其中包含从发送请求到响应到达所用的时间。通常用于在某个时间点 elapsed 后停止连接。

# import requests module 
import requests 
  
# Making a get request 
response = requests.get('http://stackoverflow.com/') 
  
# print response 
print(response) 
  
# print elapsed time 
print(response.elapsed)

输出:

<Response [200]>
0:00:00.343720
相关问题