当前位置: 首页 > news >正文

六、Locust之TaskSets详解

​ TaskSets是一种结构化测试分层网站/系统的方法。你可以在这里关于它的信息。

1.TaskSet class

​ 如果你正在对一个以分层方式构建的网站进行性能测试,有章节和子章节,以同样的方式构建你的负载测试可能是有用的。

​ 为了这个目的,Locust提供了TaskSet类。它是一个任务的集合,将被执行,就像直接在用户类上声明的那些任务。

注意:

任务集是一个高级功能,只是很少有用。大多数时候,你最好使用常规的 Python 循环和控制语句来实现同样的事情。也有一些问题,最常见的是忘记调用self.interrupt()

from locust import User, TaskSet, constantclass ForumSection(TaskSet):wait_time = constant(1)@task(10)def view_thread(self):pass@taskdef create_thread(self):pass@taskdef stop(self):self.interrupt()class LoggedInUser(User):wait_time = constant(5)tasks = {ForumSection:2}@taskdef my_task(self):pass

一个任务集也可以使用@task装饰器直接内联到User/TaskSet类下。

class MyUser(User):@taskclass MyTaskSet(TaskSet):...

一个任务集类的任务可以是其他的任务集类,允许它们嵌套任何数量的级别。这使得我们可以定义一种行为,以一种更真实的方式模拟用户。

例如,我们可以定义具有以下结构的TaskSets。

- Main user behaviour- Index page- Forum page- Read thread- Reply- New thread- View next page- Browse categories- Watch movie- Filter movies- About page

当一个正在运行的用户线程选择一个TaskSet类来执行时,这个类的实例将被创建,然后执行将进入这个TaskSet。

​ 然后发生的事情是,TaskSet的一个任务将被选中并执行,然后线程将睡眠一个由User的wait_time函数指定的持续时间(除非在TaskSet类上直接声明了一个wait_time函数,在这种情况下,它将使用该函数),然后从TaskSet的任务中挑选一个新任务,再次等待,如此循环。

​ TaskSet实例包含一个对用户的引用 - self.user。它也有一个指向其用户的客户端属性的快捷方式。所以你可以使用self.client.request()进行请求,就像你的任务直接定义在一个HttpUser上一样。

2. 终断 TaskSet

​ 关于TaskSets的一个重要的事情是,它们永远不会停止执行它们的任务,并把执行权交还给它们的父用户/TaskSet,自己。这必须由开发者通过调用TaskSet.interrupt()方法来完成。

interrupt(self, reschedule=True)
# 中断任务集并将执行控制权交还给父任务集。
# 如果reschedule为True(默认),父用户将立即重新安排,并执行一个新任务。

在下面的例子中,如果我们没有调用self.interrupt()的停止任务,模拟用户一旦进入论坛的任务集,就永远不会停止运行任务。

class RegisteredUser(User):@taskclass Forum(TaskSet):@task(5)def view_thread(self):pass@task(1)def stop(self):self.interrupt()@taskdef frontpage(self):pass

使用中断函数,我们可以-与任务加权一起–定义一个模拟用户离开论坛的可能性有多大。

3. TaskSet和User中的任务之间的区别

​ 与直接驻留在用户下的任务相比,驻留在 TaskSet 下的任务的一个区别是,它们在执行时被传递的参数(对于用 @task decorator 声明为方法的任务来说,是对 TaskSet 实例的引用,而不是对用户实例的引用。用户实例可以通过 TaskSet.user 从 TaskSet 实例中被访问。TaskSets 还包含一个方便的客户属性,它指的是 User 实例上的客户属性。

4. 引用用户实例,或父任务集实例

一个TaskSet实例的属性user将指向它的User实例,而属性parent则指向它的父任务集实例。

5. 标签和TaskSet

​ 你可以使用@tag装饰器来标记TaskSets,方法与普通任务类似,但有一些细微差别值得一提。给一个TaskSet打上标签,将自动把标签应用到该任务集的所有任务中。

​ 此外,如果你在一个嵌套的TaskSet中标记一个任务,即使这个TaskSet没有被标记,Locust也会执行这个任务。

6. SequentialTaskSet 类

​ SequentialTaskSet是一个任务集,其任务将按照它们被声明的顺序执行。可以在一个任务集中嵌套SequentialTaskSets,反之亦然。

例如,下面的代码将按顺序请求URLs /1-/4,然后再重复。

def function_task(taskset):taskset.client.get("/3")class SequenceOfTasks(SequentialTaskSet):@taskdef first_task(self):self.client.get("/1")self.client.get("/2")# 您仍然可以使用 tasks 属性来指定任务列表tasks = [function_task]@taskdef last_task(self):self.client.get("/4")

注意,你不需要SequentialTaskSets来按顺序做一些请求。
通常在一个任务中做整个用户流会更容易。

更多教程,更多实战案例,请阅读:https://edu.csdn.net/course/detail/38449

在这里插入图片描述

更多教程,更多实战案例,请阅读:https://edu.csdn.net/course/detail/38449

相关文章:

六、Locust之TaskSets详解

​ TaskSets是一种结构化测试分层网站/系统的方法。你可以在这里阅读更多关于它的信息。 1.TaskSet class ​ 如果你正在对一个以分层方式构建的网站进行性能测试,有章节和子章节,以同样的方式构建你的负载测试可能是有用的。 ​ 为了这个目的&#x…...

flask_知识点3_css

flask_知识点3_css样式1高度和宽度2行内和块级3字体和颜色4文字对齐方式5浮动6 内边距6 外边距!css重点1、css样式2、分析页面布局3、参考别人的成果css引用方式1 在标签上(不建议使用)// An highlighted block var foo bar;2 在head标签中写…...

Redis_概述_特性_IO模型

本章要点 掌握NoSql数据库的概念和与sql数据库的区别初步了解Redis内存数据库了解Redis内存数据库的优点及其原因掌握Redis的多线程IO模型学习Redis的安装和配置 Redis简介 Redis 全称 Remote Dictionary Server 远程字典服务! 使用C语言编写,支持网络,可基于内存也可以持久化…...

[论文速览] Sparks of Artificial General Intelligence: Early experiments with GPT-4

Sparks of Artificial General Intelligence: Early experiments with GPT-4 2023.3.22 微软官方发布了目前人类史上最强AI模型 GPT-4 的综合能力评估论文,总所周知,2023年是通用人工智能(Artificial General Intelligence,AGI&a…...

舔狗日记:学姐生日快到了,使用Python把她的照片做成视频当礼物

舔狗日记1前言一、需要调入的模块二、实现合并多张图片转成 mp4 视频三、优化改进一下总结前言 这不是学姐生日快到了,于是我学了一手使用Python来把学姐的照片生成为视频,到时候给她一个惊喜! 好了先不舔了,下面分享一下用pytho…...

从《移动互联网应用程序(App)收集使用个人信息自评估指南》看个人信息保护着力点

为指导应用运营者对自身收集、使用个人信息行为进行自查自纠,2019年3月,应用专项治理工作组发布了《应用违法违规收集使用行为自查自查指南》。个人信息”。随着对App违法收集、使用个人信息行为评价工作的开展和深入,《App违法违规收集、使用…...

电脑0x0000001A蓝屏错误怎么U盘重装系统教学

电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。 准备工作&…...

Day939.如何小步安全地升级数据库框架 -系统重构实战

如何小步安全地升级数据库框架 Hi,我是阿昌,今天学习记录的是关于如何小步安全地升级数据库框架的内容。 当消息组件的数据存储都是采用 SQL 拼写的方式来操作,这样不便于后续的扩展及维护。除此之外,相比前面的其他重构&#x…...

2023 年十大 API 管理趋势

作者郑玩星,API7.ai 技术工程师。 阅读原文 什么是 API?什么是 API 管理? 近期,AIGC(AI Generated Content,生成式人工智能)在各行业的应用日趋普及。AIGC 服务提供商通过 API 向外部提供其内…...

计算机网络微课堂1-3节

目录 1. TCP/TP协议​编辑 2. 3.调制解调器 4.因特网的组成 5.电路交换 6.分组交换 重要常用 7.报文交换 8.总结电路交换 报文交换和分组交换 9. 1. TCP/TP协议 2. ISP 网络提供商 ISP的三层 国际 国家 和本地 3.调制解调器 什么是调制解调器,它存在的…...

[Eigen中文文档] Array类与元素操作

文档总目录 本文目录什么是Array类?Array类型访问Array中的值加法与减法Array乘法其他按元素操作的运算array和matrix表达式之间的转换英文原文(The Array class and coefficient-wise operations) 本页旨在提供有关如何使用Eigen的Array类的概述和说明。 什么是A…...

python学习,全球有哪些特别好的社区推荐呢?

Surfshark可以访问全球社区学习的surfshark工具使用方法教程:qptool.net/shark.html 以下是一些全球范围内比较受欢迎的 Python 学习社区: 中文社区:csdn.net 优势:本土国语社区,获得相关知识与经验便利。 Python官…...

LC-1042. 不邻接植花(四色问题(染色法))

1042. 不邻接植花 难度中等198 有 n 个花园,按从 1 到 n 标记。另有数组 paths ,其中 paths[i] [xi, yi] 描述了花园 xi 到花园 yi 的双向路径。在每个花园中,你打算种下四种花之一。 另外,所有花园 最多 有 3 条路径可以进入…...

python实战应用讲解-【numpy科学计算】scikits-learn模块(附python示例代码)

目录 Numpy 安装scikits-learn 准备工作 具体步骤 Numpy 加载范例数据集 具体步骤...

大数据开发必备面试题Spark篇01

1、Hadoop 和 Spark 的相同点和不同点? Hadoop 底层使用 MapReduce 计算架构,只有 map 和 reduce 两种操作,表达能力比较欠缺,而且在 MR 过程中会重复的读写 hdfs,造成大量的磁盘 io 读写操作,所以适合高时…...

SpringBoot整合xxl-job详细教程

SrpingBoot整合xxl-job,实现任务调度说明调度中心执行器调试整合SpringBoot说明 Xxl-Job是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。Xxl-Job有…...

【MySQL--04】数据类型

文章目录1.数据类型1.1数据类型分类1.2数值类型1.2.1tinyint类型1.2.2bit类型1.2.3小数类型1.2.3.1 float1.2.3.2 decimal1.3字符串类型1.3.1 char1.3.2 varchar1.3.3char和varchar的比较1.4日期和时间类型1.5 enum和set1.5.1 enum1.5.2 set1.5.3 示例1.数据类型 1.1数据类型分…...

git 将其它分支的文件检出到工作区

主要是使用如下命令&#xff1a; git checkout [-f|--ours|--theirs|-m|--conflict<style>] [<tree-ish>] [--] <pathspec>…​覆盖与 pathspec 匹配的文件的内容。当没有给出<tree-ish> (通常是一个commit)时&#xff0c;用 index 中的内容覆盖工作树…...

人工智能的最大危险是什么?

作者&#xff1a;GPT(AI智学习) 链接&#xff1a;https://www.zhihu.com/question/592107303/answer/2966857095 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 首先&#xff1a;人工智能为人类带来了很多益处&…...

rk3568点亮E-ink

rk3568 Android11/12 适配 E-ink “EINK”是英语ElectronicInk的缩写。翻译成中文为“电子墨水”。电子墨水由数百万个微胶囊(Microcapsules)所构成&#xff0c;微胶囊的大小约等同于人类头发的直径。每个微胶囊里含有电泳粒子──带负电荷的白色以及带正电荷的黑色粒子&#…...

如何将Springboot项目通过IDEA打包成jar包,并且转换成可执行文件

首先在IDEA打开你的项目&#xff0c;需要确认项目可以正常运行&#xff0c;然后点击页面右侧的Maven,运行Lifecycle下的package, 此时在项目的target目录下就可以看到一个jar包 这个时候你可以在jar包所在目录下执行cmd窗口&#xff0c;运行 java -jar campus-market-0.0.1-S…...

总结:网卡

一、背景 经常听到eth0&#xff0c;bond0这些概念&#xff0c;好奇他们的区别&#xff0c;于是有了此篇文章记录下。 二、介绍 网卡&#xff1a;即网络接口板&#xff0c;又称网络适配器或NIC (网络接口控制器)&#xff0c;是一块被设计用来允许计算机在计算机网络上进行通讯…...

Java这么卷,还有前景吗?

“Java很卷”、“大家不要再卷Java了”&#xff0c;经常听到同学这样抱怨。但同时&#xff0c;Java的高薪也在吸引越来越多的同学。不少同学开始疑惑&#xff1a;既然Java这么卷&#xff0c;还值得我入行吗&#xff1f; 首先先给你吃一颗定心丸&#xff1a;现在选择Java依然有…...

后端简易定时任务框架选择(Python/Go)--gocron

文章目录前言实现后语前言 在使用Python的web框架中&#xff0c;包括flask/Django&#xff0c;其中大量用到celery&#xff1b;celery作为异步任务使用的多&#xff0c;同时也会用celery来跑些定时任务&#xff0c;比如每晚定时跑脚本、跑数据统计等闲时任务。但随着任务量的增…...

【GStreamer学习】之GStreamer基础教程

目标 没有什么比在屏幕上打印出“Hello World”更能获得对软件库的第一印象了&#xff01; 但是由于我们正在学习多媒体框架&#xff0c;所以我们将输出“Hello World&#xff01;”改为播放视频。 不要被下面的代码量吓到&#xff1a;只有 4 行是真正需要的&#xff0c; 其…...

各类Round-Robin总结,含Verilog实现

1. Fixed Priority Arbitrary 固定优先级就是指每个req的优先级是不变的,即优先级高的先被处理,优先级低的必须是在没有更高优先级的req的时候才会被处理。所以转化为数学模型就是找出req序列中第一个为1的位置,然后将其转换为onehot。 例如: req[3:0] = 4b1100 ==> g…...

《软件设计师-知识点》

1、指令流水线 &#xff08;一&#xff09;一条指令的执行过程可分为三个阶段&#xff1a;取指、分析、执行。 取指&#xff1a;根据PC&#xff08;程序计数器&#xff09;内容访问主存储器&#xff0c;取出一条指令送到IR&#xff08;指令寄存器&#xff09;中。 分析&…...

mysql 同义词_数据库中的同义词synonym

一、Oracle数据只有一个实例(简单理解就是Oracle 只能建立一个数据库&#xff0c;不像MySQL&#xff0c;它下面可以创建N个库)&#xff0c;那么Oracle是根据用户灵活去管理的&#xff1b;这点读起来、理解 起来也不那么难&#xff0c;但是除非自己亲自实现一把才理解深入点&…...

Nacos共享配置

本文介绍一下Nacos作为配置中心时&#xff0c;如何读取共享配置 我的环境 Windows10JDK8SpringCloud&#xff1a;Finchley.RELEASESpringBoot&#xff1a;2.0.4.RELEASEspring-cloud-alibaba-dependencies&#xff1a;0.2.2.RELEASENacos-server&#xff1a;1.0.1 本文的项目…...

数据结构——排序(4)

作者&#xff1a;几冬雪来 时间&#xff1a;2023年4月12日 内容&#xff1a;数据结构排序内容讲解 目录 前言&#xff1a; 1.快速排序中的递归&#xff1a; 2.小区间优化&#xff1a; 3.递归改非递归&#xff1a; 4.归并排序&#xff1a; 5.归并排序的非递归形式&…...