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

coo*_*okM 41 python networking delay timeit python-requests

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

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

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

t = timeit.Timer("requests.get('http://www.google.com')", "import requests")
Run Code Online (Sandbox Code Playgroud)

我是否真的在测量响应到达的时间,还是构建,发送,接收等请求所需的时间?我猜我可以忽略那个超时时间,因为我正在测试网络延迟很长时间(~700ms)?

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

GvS*_*GvS 169

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

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

例如:

requests.get("http://127.0.0.1").elapsed.total_seconds()
Run Code Online (Sandbox Code Playgroud)

  • 以秒为单位获取响应时间:`requests.get("http://127.0.0.1").elapsed.total_seconds()` (28认同)
  • 不要使用它来在客户端进行性能分析和优化代码.它只测量服务器的响应时间(这是OP的问题)._发送请求和响应到达之间经过的时间(作为timedelta).此属性专门测量发送请求的第一个字节和完成解析标头之间所需的时间.因此,它不会受到响应内容或stream关键字参数的值的影响._ - 文档. (6认同)
  • 要添加到Micael Osl的注释中:`total_seconds()`是一个十进制数,似乎具有微秒精度. (2认同)
  • @GvS怎么样`Python 3`和`urllib3`? (2认同)

pyf*_*unc 29

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

  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
Run Code Online (Sandbox Code Playgroud)

  • + 4.解析HTTP响应 (6认同)