写点什么

秒懂 Requests 响应时间获取技巧!

作者:LLLibra146
  • 2024-12-05
    北京
  • 本文字数:777 字

    阅读完需:约 3 分钟

引言

本篇文章分享一下如何获取 Requests 请求的响应时间。


获取响应时间

说到获取响应时间,大家首先会想到计时,可能会写出以下代码:


import timefrom contextlib import contextmanager
import requests

@contextmanagerdef timer(): t = time.time() yield print(f'运行时间为:{time.time() - t:.4f}s')

with timer() as t: r = requests.get("http://www.python.org") print(r.status_code)
复制代码


虽然说也能很方便的获取到响应时间,但是还是要写额外的代码,其实 Requests 本身自带了计时器,每个请求都会记录请求的响应时间,话不多说,直接上代码,响应对象中,有一个 elapsed 属性,可以直接输出它来获取响应时间。


import requests
r = requests.get("http://www.python.org")print(r.status_code)print(r.elapsed)print(r.elapsed.total_seconds())print(r.elapsed.seconds)print(r.elapsed.microseconds)print(r.elapsed.days)
复制代码


运行结果:


2000:00:00.6843670.68436706843670
复制代码


elapsed 属性是一个 datetime.timedelta 类型的值,可以转换成秒,微妙,天等类型的时间类型。

获取响应时间源码

从源码看,响应对象中,有一个 elapsed 属性,在构造函数中初始化成了 datetime.timedelta(0)



requests.adapters.BaseAdapter.send 方法中,在发送请求之前启用了计时器,在收到响应之后,停止计时器,将时间的差值赋值给 elapsed 属性,从而获取当前响应的响应时间。



总结

在本篇文章中,我们了解了如何在使用 Requests 时获取响应时间。除了自己编写计时器外,利用 Requests 自带的 elapsed 属性可以更加方便和直观地完成这一任务。此外,通过对源码的简单分析,我们也理解了 elapsed 属性的实现原理,这不仅有助于我们高效地使用 Requests,还能加深对其内部机制的认识。


希望本文能够帮助大家在日常开发中更好地掌握和运用 Requests。

发布于: 刚刚阅读数: 5
用户头像

LLLibra146

关注

还未添加个人签名 2018-09-17 加入

还未添加个人简介

评论

发布
暂无评论
秒懂Requests响应时间获取技巧!_Python_LLLibra146_InfoQ写作社区