热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python进行接口压力测试(1秒1000个请求)

需求需要对接口进行压力测试,测试其最大并发是多少python代码importjsonimportrequestsimporttimeimportconcu

需求


  1. 需要对接口进行压力测试,测试其最大并发是多少

python代码

import json
import requests
import time
import concurrent.futures
import threadingSUCCESS = 0
FAIL = 0;def Api(name,pwd):registerUrl = 'http://localhost:8001/api/UserInfo/Login'data = {'name':name,'password':pwd}paramData = json.dumps(data)headers = {'Content-Type':'application/json;charset=utf-8'}try:response = requests.post(registerUrl,data=paramData,headers=headers,timeout=3)resObj = json.loads(response.text)except Exception as ex:global FAILFAIL += 1print('失败次数={}'.format(FAIL))print(str(ex))finally:global SUCCESSSUCCESS += 1# resObj = json.loads(response.text)# print((resObj['data']['identifier'])) class MyThread(threading.Thread):'''线程类'''def __init__(self,name,pwd):threading.Thread.__init__(self)self.name = nameself.pwd = pwddef run(self):'''线程创建后会直接运行run函数'''Api(self.name,self.pwd)class PressuerTest:def simple(self,num):'''单线程,不做任何处理'''for i in range(num):name = "gagag" + str(i)pwd = 'passwrodtest'Api(name,pwd)def _BatchRegister(self,num):name = "gagag" + str(num)pwd = 'passwrodtest'Api(name,pwd)def _BatchRegisterAll(self,numList):'''并发这里创建一个线程池,总共有5个线程可以分配使用executor.map()与map()函数类似,表示对sites中的每一个元素,并发地调用函数'''with concurrent.futures.ThreadPoolExecutor(max_workers=80) as executor:executor.map(self._BatchRegister, numList)def mult(self,num):'''线程池'''numList = []for i in range(num):numList.append(i)self._BatchRegisterAll(numList)def newMultThread(self,num):'''新建多个线程'''threadArr = []for i in range(num):name = "newMultThread_" + str(i)pwd = 'pwd'thread = MyThread(name,pwd)thread.start()threadArr.append(thread)if __name__ == '__main__':startTime = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))pre = PressuerTest()# pre.simple(100);# pre.mult(100);pre.newMultThread(2000)endTime = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))print('开始时间:{}'.format(startTime)) print('结束时间:{}'.format(endTime))

总结


代码中一共使用了3种方式取执行压力测试,


  1. 单线程明显的会慢很多
  2. 多线程的采用线程池的话也达不到1秒1000个请求,会在一个线程执行完才会走到下一个线程
  3. 每个请求一个线程可以达到效果,线程会很快启动完,可以达到1秒1000个的高并发量(也可以更高)

额外因素


  1. 客户端的设置的超时时间会对并发数量有影响。
  2. 服务器的MinRequestBodyDataRate也会有影响(针对.netCore)

推荐阅读
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 浅析python实现布隆过滤器及Redis中的缓存穿透原理_python
    本文带你了解了位图的实现,布隆过滤器的原理及Python中的使用,以及布隆过滤器如何应对Redis中的缓存穿透,相信你对布隆过滤 ... [详细]
  • 本文回顾了作者初次接触Unicode编码时的经历,并详细探讨了ASCII、ANSI、GB2312、UNICODE以及UTF-8和UTF-16编码的区别和应用场景。通过实例分析,帮助读者更好地理解和使用这些编码。 ... [详细]
  • 探讨了 Python 中 UTF-8 编码的中文字符在某些情况下被误识别为 GB2312 的问题,并提供了详细的代码示例和环境信息。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 在Delphi7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本。定义如下:1234 ... [详细]
  • 本文详细介绍了如何使用Python中的smtplib库来发送带有附件的邮件,并提供了完整的代码示例。作者:多测师_王sir,时间:2020年5月20日 17:24,微信:15367499889,公司:上海多测师信息有限公司。 ... [详细]
  • 利用REM实现移动端布局的高效适配技巧
    在移动设备上实现高效布局适配时,使用rem单位已成为一种流行且有效的技术。本文将分享过去一年中使用rem进行布局适配的经验和心得。rem作为一种相对单位,能够根据根元素的字体大小动态调整,从而确保不同屏幕尺寸下的布局一致性。通过合理设置根元素的字体大小,开发者可以轻松实现响应式设计,提高用户体验。此外,文章还将探讨一些常见的问题和解决方案,帮助开发者更好地掌握这一技术。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
author-avatar
脸皮乃身外之物
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有