51

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

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

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

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

我真的在测量响应到达所花费的时间,还是构建、发送、接收请求所花费的时间?我猜我可能会忽略那个执行时间,因为我正在测试延迟很长(约 700 毫秒)的网络?

有没有更好的方法来以编程方式做到这一点?

4

3 回答 3

186

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

https://requests.readthedocs.io/en/latest/api/?highlight=elapsed#requests.Response.elapsed

例如:

requests.get("http://127.0.0.1").elapsed.total_seconds()
于 2014-01-09T10:37:02.100 回答
35

至于你的问题,应该是总时间

  1. 创建请求对象的时间
  2. 发送请求
  3. 收到回复
  4. 解析响应(见 Thomas Orozco 的评论)

测量单个请求加载时间的其他方法是使用 urllib:

nf = urllib.urlopen(url)
start = time.time()
page = nf.read()
end = time.time()
nf.close()
# end - start gives you the page load time
于 2012-06-22T15:54:54.817 回答
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
于 2021-02-19T23:01:43.243 回答