接口压力测试500次,查看响应时间
import json
import requests
import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
restime = []
OK=[]
class Restime():
def API(self,URL2,param):
try:
r = requests.get(URL2, params=param, timeout=10)
r.raise_for_status() # 如果响应状态码不是 200,就主动抛出异常
except requests.RequestException as e:
print(e)
else:
js = json.dumps(r.json())
return [r.json(), r.elapsed.total_seconds(),js]
def circulation(self,num,URL2,param):
for i in range(num):
restime.append(Restime.API(URL2,param)[1])
if json.loads(Restime.API(URL2, param)[2])["message"]=='ok':
OK.append(json.loads(Restime.API(URL2, param)[2])["message"])
logger.info('请求第' + str(i+1) + '次,请求'+json.loads(Restime.API(URL2, param)[2])["message"]+',状态码:'+json.loads(Restime.API(URL2, param)[2])["status"])
else:
logger.info('请求第' + str(i+1) + '次,请求' + json.loads(Restime.API(URL2, param)[2])["message"] + ',状态码:' +
json.loads(Restime.API(URL2, param)[2])["status"])
print('测试次数:',num)
print('响应次数:', len(restime))
print('正常响应次数:', len(OK))
print('总响应最大时长:', max(restime))
print('总响应最小时长:', min(restime))
print('总响应时长:', sum(restime))
print('平均响应时长:', sum(restime) / len(restime))
if __name__ == '__main__':
Restime=Restime()
#URL2 = 'http://wthrcdn.etouch.cn/weather_mini'
#param = {'ip': '8.8.8.8', 'city': '西安'}
num=500 #压力测试次数
URL2 = 'http://www.kuaidi100.com/query' #地址
param = {'type' : 'zhongtong' , 'postid' :'73116039505988' } #参数
Restime.circulation(num,URL2,param)
input('Press Enter to exit...')
测试次数: 500 响应次数: 500 正常响应次数: 500 总响应最大时长: 0.336179 总响应最小时长: 0.062753 总响应时长: 41.892936000000034 平均响应时长: 0.08378587200000007
补充知识:python利用requests统计1个接口的响应时间
requests统计接口的响应时间有2种方式
r.elapsed.total_seconds()
r.elapsed.microseconds/(1000*1000)
但是第2种方式,当调用的接口响应时间大于1s时,得到的响应时间是不准确的。下面来看示例
首先看接口响应时间小于1s时,分别使用2种方式得到 post "https://www.baidu.com/" 的响应时间
代码示例:
import requests url = "https://www.baidu.com/" r = requests.post(url) # print(r.text) #推荐使用这种方式统计一个接口的响应时间,准确性更高 print(r.elapsed.total_seconds()) #当接口的响应时间大于1s时,下面这种统计方式就会不准确 print(r.elapsed.microseconds/(1000*1000))
运行结果:
0.039872
0.039872
再测试一个接口响应时间超过1s的接口,
然后看接口响应时间大于1s时,分别使用2种方式得到 post "http://cn.python-requests.org/zh_CN/1atest/" 的响应时间
果然发现2种方式统计的结果不一样了呢
import requests url = "http://cn.python-requests.org/zh_CN/1atest/" r = requests.post(url) # print(r.text) #结果正确 print(r.elapsed.total_seconds()) #结果不正确 print(r.elapsed.microseconds/(1000*1000))
运行结果:
1.298427
0.298427
很显然,r.elapsed.microseconds/(1000*1000)在接口的响应时间大于1s时,只截取了后面的小数部分
以上这篇python+requests接口压力测试500次,查看响应时间的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新动态
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]
