requests获取响应时间(elapsed)与超时(timeout)、小数四舍五入
前言
requests发请求时,接口的响应时间,也是我们需要关注的一个点,如果响应时间太长,也是不合理的。
如果服务端没及时响应,也不能一直等着,可以设置一个timeout超时的时间
elapsed官方文档
elapsed里面几个方法介绍
total_seconds 总时长,单位秒 days 以天为单位 microseconds (>= 0 and less than 1 second) 获取微秒部分,大于0小于1秒 seconds Number of seconds (>= 0 and less than 1 day) 秒,大于0小于1天 max = datetime.timedelta(999999999, 86399, 999999) 最大时间 min = datetime.timedelta(-999999999) 最小时间 resolution = datetime.timedelta(0, 0, 1) 最小时间单位
获取响应时间
1.获取elapsed不同的返回值
import requests r = requests.get("https://home.cnblogs.com/u/lixy-88428977/") print("elapsed: %s" % r.elapsed) print("total_seconds: %s" % r.elapsed.total_seconds()) print("microseconds: %s" % r.elapsed.microseconds) print("seconds: %s" % r.elapsed.seconds) print("days: %s" % r.elapsed.days) print("max: %s" % r.elapsed.max) print("min: %s" % r.elapsed.min) print("resolution: %s" % r.elapsed.resolution)
所以获取响应时间的正确姿势应该是:r.elapsed.total_seconds(),单位是s
timeout超时
1.如果一个请求响应时间比较长,不能一直等着,可以设置一个超时时间,让它抛出异常
2.如下请求,设置超时为0.5s,那么就会抛出这个异常:requests.exceptions.ConnectTimeout: HTTPConnectionPool
import requests r = requests.get("https://home.cnblogs.com/u/lixy-88428977/", timeout=1) print("elapsed: %s" % r.elapsed) print("total_seconds: %s" % r.elapsed.total_seconds()) print("microseconds: %s" % r.elapsed.microseconds)
小数点后取2位(四舍五入)以及取2位(四舍五不入)的方法
一.小数点后取2位(四舍五入)的方法
方法一:round()函数
import requests r = requests.get("https://home.cnblogs.com/u/lixy-88428977/", timeout=1) time = r.elapsed.total_seconds() print("原始数据: %s" % time) print(round(time, 3))
方法二:’%.2f’ %f 方法
import requests r = requests.get("https://home.cnblogs.com/u/lixy-88428977/", timeout=1) time = r.elapsed.total_seconds() print("原始数据: %s" % time) print('%.2f' % time)
方法三:Decimal()函数
import requests from decimal import Decimal r = requests.get("https://home.cnblogs.com/u/lixy-88428977/", timeout=1) time = r.elapsed.total_seconds() print("原始数据: %s" % time) a = Decimal(time).quantize(Decimal('0.00')) print(a)
二.小数点后取2位(四舍五不入)的方法
import requests def get_two_float(f_str, n): f_str = str(f_str) # f_str = '{}'.format(f_str) 也可以转换为字符串 a, b, c = f_str.partition('.') c = (c+"0"*n)[:n] # 如论传入的函数有几位小数,在字符串后面都添加n为小数0 return ".".join([a, c]) r = requests.get("https://home.cnblogs.com/u/lixy-88428977/", timeout=1) time = r.elapsed.total_seconds() print("原始数据: %s" % time) print(get_two_float(time, 2))
整理此篇文章,源于,接口自动化响应时间的获取,打印!
url = self.uri + "/json/crm/save.action" data = self.s.post(url, data=self.testDody, verify=False) Time = str(data.elapsed.total_seconds()) print(('响应时间: '+'%.2f'% float(Time) +'s' ))
作者:含笑半步颠√
博客链接:https://www.cnblogs.com/lixy-88428977
声明:本文为博主学习感悟总结,水平有限,如果不当,欢迎指正。如果您认为还不错,欢迎转载。转载与引用请注明作者及出处。
引用"虫师":生活依旧,工作依旧,学习依旧,趁着对技术还热情,继续学习与总结。
分类:
python接口自动化
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)