python+requests接口压力测试500次,查看响应时间的实例


Posted in Python onApril 30, 2020

接口压力测试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接口压力测试500次,查看响应时间的实例

补充知识: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次,查看响应时间的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中处理字符串的相关的len()方法的使用简介
May 19 Python
详解Python3中的Sequence type的使用
Aug 01 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
Jan 27 Python
python爬虫中get和post方法介绍以及cookie作用
Feb 08 Python
python3 下载网络图片代码实例
Aug 27 Python
使用Python爬虫库requests发送表单数据和JSON数据
Jan 25 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
Apr 12 Python
PageFactory设计模式基于python实现
Apr 14 Python
python 贪心算法的实现
Sep 18 Python
关于Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
Oct 27 Python
python 下载m3u8视频的示例代码
Nov 11 Python
教你使用Python获取QQ音乐某个歌手的歌单
Apr 03 Python
Pycharm连接远程服务器过程图解
Apr 30 #Python
python3发送request请求及查看返回结果实例
Apr 30 #Python
python获取响应某个字段值的3种实现方法
Apr 30 #Python
如何在python中执行另一个py文件
Apr 30 #Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
Apr 30 #Python
Python实现转换图片背景颜色代码
Apr 30 #Python
Python requests.post方法中data与json参数区别详解
Apr 30 #Python
You might like
dedecms中显示数字验证码的修改方法
2007/03/21 PHP
php自动适应范围的分页代码
2008/08/05 PHP
php笔记之常用文件操作
2010/10/12 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
2014/06/13 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
2015/11/17 PHP
CentOS 上搭建 PHP7 开发测试环境
2017/02/26 PHP
PHP查询分页的实现代码
2017/06/09 PHP
php-fpm开启状态统计的方法详解
2017/06/23 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
Javascript变量函数浅析
2011/09/02 Javascript
JS 操作符整理[推荐收藏]
2011/11/15 Javascript
jQuery LigerUI 使用教程表格篇(1)
2012/01/18 Javascript
14款NodeJS Web框架推荐
2014/07/11 NodeJs
嵌入式iframe子页面与父页面js通信的方法
2015/01/20 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
2016/12/15 Javascript
.vue文件 加scoped 样式不起作用的解决方法
2018/05/28 Javascript
JS中实现浅拷贝和深拷贝的代码详解
2019/06/05 Javascript
Threejs实现滴滴官网首页地球动画功能
2020/07/13 Javascript
Django在Win7下的安装及创建项目hello word简明教程
2014/07/14 Python
Python实现过滤单个Android程序日志脚本分享
2015/01/16 Python
Python中__new__与__init__方法的区别详解
2015/05/04 Python
python 反编译exe文件为py文件的实例代码
2019/06/27 Python
教你如何编写、保存与运行Python程序的方法
2019/07/12 Python
Python对接支付宝支付自实现功能
2019/10/10 Python
python中设置超时跳过,超时退出的方式
2019/12/13 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
2020/03/24 Python
关于HTML5语义标签的实践(blog页面)
2016/07/12 HTML / CSS
Anthropologie英国:美国家喻户晓的休闲服装和家居产品品牌
2018/12/05 全球购物
物流仓管员工作职责
2014/01/06 职场文书
论文诚信承诺书
2014/05/23 职场文书
护士2014年终工作总结
2014/11/11 职场文书
倡议书格式及范文
2015/04/29 职场文书
学历证明范文
2015/06/16 职场文书
开学第一周日记(三篇范文)
2019/08/23 职场文书
python双向链表实例详解
2022/05/25 Python
Python实现仓库管理系统
2022/05/30 Python