范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

聊聊Jmeter如何并发执行Python脚本

  来源:AirPython
  作者:星安果
  1. 前言
  大家好,我是安果!
  最近有小伙伴后台给我留言,说自己用 Django 写了一个大文件上传的 Api 接口,现在想本地检验一下接口并发的稳定性,问我有没有好的方案
  本篇文章以文件上传为例,聊聊 Jmeter 并发执行 Python 脚本的完整流程2. Python 实现文件上传
  大文件上传包含 3 个步骤,分别是:获取文件信息及切片数目分段切片,并上传 - API文件合并 - API文件路径参数化
  2-1 获取文件信息及切片数目
  首先,获取文件的大小
  然后,利用预设的切片大小获取分段总数
  最后,获取文件名及 md5 值
  import os
  import math
  import hashlib
  def get_file_md5(self, file_path):
  """获取文件的md5值"""
  with open(file_path, "rb") as f:
  data = f.read()
  return hashlib.md5(data).hexdigest()
  def get_filename(self, filepath):
  """获取文件原始名称"""
  # 文件名带后缀
  filename_with_suffix = os.path.basename(filepath)
  # 文件名
  filename = filename_with_suffix.split(".")[0]
  # 后缀名
  suffix = filename_with_suffix.split(".")[-1]
  return filename_with_suffix, filename, suffix
  def get_chunk_info(self, file_path):
  """获取分段信息"""
  # 获取文件总大小(字节)
  file_total_size = os.path.getsize(file_path)
  print(file_total_size)
  # 分段总数
  total_chunks_num = math.ceil(file_total_size / self.chunk_size)
  # 文件名(带后缀)
  filename = self.get_filename(file_path)[0]
  # 文件的md5值
  file_md5 = self.get_file_md5(file_path)
  return file_total_size, total_chunks_num, filename, file_md5
  2-2 切片及分段上传
  利用分段总数和分段大小,对文件进行切片,调用分段文件上传接口
  import requests
  def do_chunk_and_upload(self, file_path):
  """将文件分段处理,并上传"""
  file_total_size, total_chunks_num, filename, file_md5 = self.get_chunk_info(file_path)
  # 遍历
  for index in range(total_chunks_num):
  print("第{}次文件上传".format(index + 1))
  if index + 1 == total_chunks_num:
  partSize = file_total_size % chunk_size
  else:
  partSize = chunk_size
  # 文件偏移量
  offset = index * chunk_size
  # 生成分片id,从1开始
  chunk_id = index + 1
  print("开始准备上传文件")
  print("分片id:", chunk_id, "文件偏移量:", offset, ",当前分片大小:", partSize, )
  # 分段上传文件
  self.__upload(offset, chunk_id, file_path, file_md5, filename, partSize, total_chunks_num)
  def __upload(self, offset, chunk_id, file_path, file_md5, filename, partSize, total):
  """分次上传文件"""
  url = "http://**/file/brust/upload"
  params = {"chunk": chunk_id,
  "fileMD5": file_md5,
  "fileName": filename,
  "partSize": partSize,
  "total": total
  }
  # 根据文件路径及偏移量,读取文件二进制数据
  current_file = open(file_path, "rb")
  current_file.seek(offset)
  files = {"file": current_file.read(partSize)}
  resp = requests.post(url, params=params, files=files).text
  print(resp)
  2-3 合并文件
  最后调用合并文件的接口,将分段小文件合成大文件
  def merge_file(self, filepath):
  """合并"""
  url = "http://**/file/brust/merge"
  file_total_size, total_chunks_num, filename, file_md5 = self.get_chunk_info(filepath)
  payload = json.dumps(
  {
  "fileMD5": file_md5,
  "chunkTotal": total_chunks_num,
  "fileName": filename
  }
  )
  print(payload)
  headers = {
  "Content-Type": "application/json"
  }
  resp = requests.post(url, headers=headers, data=payload).text
  print(resp)
  2-4 文件路径参数化
  为了并发执行,将文件上传路径参数化
  # fileupload.py
  ...
  if __name__ == "__main__":
  filepath = sys.argv[1]
  # 每一段切片的大小(MB)
  chunk_size = 2 * 1024 * 1024
  fileApi = FileApi(chunk_size)
  # 分段上传
  fileApi.do_chunk_and_upload(filepath)
  # 合并
  fileApi.merge_file(filepath)3. Jmeter 并发执行
  在使用 Jmeter 创建并发流程前,我们需要编写批处理脚本
  其中,执行批处理脚本时,需要跟上文件路径一起执行
  # cmd.bat
  @echo off
  set filepath=%1
  python C:UsersxingagDesktoprpc_demofileupload.py %*
  然后,在本地新建一个 CSV 文件,写入多个文件路径
  # 准备多个文件路径(csv)
  C:UsersxingagDesktopcharles-proxy-4.6.1-win64.msi
  C:UsersxingagDesktopV2.0.pdf
  C:UsersxingagDesktopHBuilder1.zip
  C:UsersxingagDesktopHBuilder2.zip
  接着,就可以使用 Jmeter 创建并发流程了
  完整步骤如下:创建一个测试计划,下面添加一个线程组这里线程组数目与上面文件数目保持一致即可线程组下,添加「 同步定时器  」同步定时器中的「 模拟用户组的数量  」和上面参数数量保持一致添加 CSV 数据文件设置指向上面准备的 csv 数据文件,设置文件格式为 UTF-8,变量名称设置为 file_path,最后将线程共享模式设置为「 当前线程组  」添加调试取样器,方便调试添加 OS 进程取样器选择上面创建的批处理文件,命令行参数设置为「 ${file_path}  」添加查看结果数4. 最后
  运行上面创建的 Jmeter 并发流程,在结果数中可以查看并发上传文件的结果
  当然,我们可以增加并发数量去模拟真实的使用场景,只需要修改 CSV 数据源及 Jmeter 参数即可

手机电脑都能用,国民好物aigo65w快充,好用不贵生活中肯定有不少小伙伴会和我一样,遇到充电器找不到,亦或是充电器不够用的情况,而出现这样的情况其实也不见怪,毕竟在科技快速发展的现在,每个年轻人手里的电子产品都不止一个,而是多个。亚马逊暂停恢复仓储中心禁令,可以在工作时保留个人手机财经网科技12月20日讯,据新浪科技报道,亚马逊出于安全考虑,正放松对仓储中心员工活动的控制。这家互联网巨头向媒体证实,该公司将放弃在仓库中禁用个人手机的新举措。该公司在12月17华为和BAT的新战场,由这四人主宰智东西(公众号zhidxcom)作者李水青编辑心缘互联网行业高速增长时代正在远去,已成一个不争事实。阿里腾讯百度等互联网巨头们比之前任何时候都更需要考虑第二增长曲线。云智能服务,是亲测华为老爷机安装谷歌框架这两天我花了些时间瞎折腾了一番,好消息是折腾成功。在此记录下来,希望可以帮助有同样苦恼的老哥。基本环境手机华为Nova2s。目标运行谷歌框架这台华为的老爷机Nova2s,因为工作原全新散热科技加持,iQOONeo5S这款手机值得购买?有哪些提升?12月份真是精彩,大伙都想在年底来点猛料啊,iQOO系列的机子一直都不错,今年三月份发布的iQOONeo5确实非常香,而iQOONeo5S算是iQOONeo5的升级款,从官方宣传海旗舰芯IP68防水,从4999降至3099,三星这款手机还可以买吗?众所周知,三星手机一直是安卓阵营的领头羊,三星也是从功能机过渡到智能机时代,唯一还存活的品牌。三星手机虽然不错,但是三星的贬值率真的让人大跌眼镜。今天小M要说的这款手机便是三星Ga英特尔需将计算力提升1000倍才能实现元宇宙近日,英特尔公司高级副总裁兼加速计算系统和图形事业部总经理RajaKoduri撰文解读了英特尔赋能元宇宙的三层技术基石,并在接受外媒专访时称,要想实现雪崩和头号玩家中天马行空的体验秒算六千万亿次,值1亿!杨元庆捐中国高校最快的思源一号进李政道研究所13日,本月初刚刚启用张江实验楼的李政道研究所,又添国内大学最快的超级计算机机群。随着上海交通大学与联想集团达成战略合作,上海交通大学杨元庆科学计算中心在李所落户。杨元庆(左二)在微信小程序是什么,能干嘛,有什么优势?随着互联网的快速发展,手机已经成为了我们生活中不可或缺的一部分每个人的手机中都有各种各样的APP那么当手机的存储空间不够用的时候,小程序就发挥到了重要的作用。那么小程序是什么呢?一腾讯探寻七化挑战下的谣言应对路径首届网络文明大会于11月19日在北京国家会议中心举行。大会主题为汇聚向上向善力量,携手建设网络文明。作为中央网信办重点打造的网络文明实践品牌,中国互联网联合辟谣平台始终以营造清朗网科技早报商汤科技重启IPO腾讯整治扫码点餐强制关注公众号问题商汤科技重新启动公开招股12月20日消息,商汤科技在港交所发布公告称,重启公开招股,发行规模和定价区间与此前保持一致。商汤此次共发行15亿股,招股价介于每股3。85港元至3。99港
最后10天倒计时!鸿蒙OS正式版或全面上线,首批优先升级名单确定2年的等待并没有白费,还有最后10天倒计时,鸿蒙OS系统正式版就要全面上线了!6月2日这一天,值得期待!虽然4月份开始,鸿蒙OS公测版就已经上线,已经有不少用户抢先体验了鸿蒙OS系2022年第一季度交付,车主期待已久的蔚来ET7到底怎么样?在众多的造车新势力中,蔚来可以说是其中的佼佼者了,无论是销量品牌影响力还有车型售价来看都属于前列。而蔚来的首款电动轿车ET7更是让不少人期待已久。据了解,蔚来ET7在5月13日完成早报(05。22)金融委打击比特币挖矿和交易行为,加密货币集体下挫!银保监会开出5张大罚单!BOSS直聘赴美IPO各位早早报君先带大家看看过去24小时全球市场个股热点。银行板块中,摩根大通涨1。14,招商银行跌2。45,美国银行涨1。27医药板块中,强生跌0。06,辉瑞跌0。42,礼来涨0。1新能源车为什么跑高速特耗电?这里提到的新能源车专指纯电动车(EV)或插电式混合动力车(如增程式电动汽车)。新能源车跑高速时的能耗分析车辆前进时,受到向后方向的空气风阻,向后方向的摩擦力(以及轮胎变形导致的能量发改委力挺居住社区充电桩建设新能源车家充难题将破解?听听专家怎么说每经记者孙桐桐每经编辑孙磊5月20日,国家发展改革委国家能源局联合发布关于进一步提升充换电基础设施服务保障能力的实施意见(征求意见稿)(以下简称实施意见),覆盖加快推进居住社区充电美团,一家会被历史唾弃的企业(美团的黑暗本质)美团,一家标榜使命是让大家吃得更好,生活更好的企业!本质却是披着光鲜外衣,行着黑暗之道的企业!可能对于许多消费者而言,美团的确是一个能让他们生活便捷并且享受实惠的公司,而对于其他企月均销量200辆,极狐汽车如何救北汽新能源?从高位跌落,再爬到高位,往往比第一次登上高位更艰难。第一次是初生牛犊,第二次是惊弦之鸟,现实世界对萌新的宽容,总是比久经沙场的老将要多。曾经连续7年登顶国内纯电动汽车销冠的北汽新能生态创新进行时第五期英特尔AI百佳企业亮相,总估值超260亿元集微网消息5月20日,英特尔公布了第五期AI百佳创新激励计划创新团队名单。并在2021第二届深圳(国际)人工智能展暨智能制造产业创新高峰论坛中,与德勤和深圳人工智能行业协会联合发布新能源物流车推广还需政策加码来源中国交通新闻网近年来,凭借诸多利好政策推动,新能源物流车市场份额逐步扩大。然而不尽如人意的是,当前我国约2000万辆物流车中,新能源物流车保有量仅约50万辆。新能源物流车推广应余承东定下新目标,华为完成蜕变,焕发第二春?华为5G技术设备的领先,一举将老美拉下了通信霸主的宝座,这让一向高傲的美科技界倍感焦虑,很显然,以华为为代表的中国科技力量,已经触碰到了他们的敏感神经。为了争夺5G主导权,老美可谓新华三与江苏有线数据公司签署战略合作协议,共创智慧广电新篇章5月20日,紫光股份旗下新华三集团与江苏有线数据网络有限责任公司(以下简称江苏有线数据公司)举行战略合作协议签约仪式,双方将围绕多行业集客业务重点社会民生领域数字建设5G技术和业务