首页 > 其他分享 >locust-任务的等待机制

locust-任务的等待机制

时间:2023-03-10 16:58:25浏览次数:33  
标签:last self locust time constant 机制 cp 等待 wait

locust任务等待有三种方式,分别是constantbetweenconstant_pacing.
他们的区别是:

 

constant(2) # 任务执行完毕等待2秒开始下一任务
between(1,7) # 任务执行完毕等待1-7秒(中间随机取值)开始下一任务
constant_pacing(2) # # 设置任务启动总得等待时间,若任务耗时超过该时间,则任务结束后立即执行下一任务;若任务耗时不超过该时间,则等待达到该时间后执行下一任务。

下面附上等待的源码:

# D:\Programs\Python\Python38-32\Lib\site-packages\locust\user\wait_time.py

import random
from time import time


def between(min_wait, max_wait):
    """
    Returns a function that will return a random number between min_wait and max_wait.

    Example::

        class MyUser(User):
            # wait between 3.0 and 10.5 seconds after each task
            wait_time = between(3.0, 10.5)
    """
    return lambda instance: min_wait + random.random() * (max_wait - min_wait)


def constant(wait_time):
    """
    Returns a function that just returns the number specified by the wait_time argument

    Example::

        class MyUser(User):
            wait_time = constant(3)
    """
    return lambda instance: wait_time


def constant_pacing(wait_time):
    """
    Returns a function that will track the run time of the tasks, and for each time it's
    called it will return a wait time that will try to make the total time between task
    execution equal to the time specified by the wait_time argument.

    In the following example the task will always be executed once every second, no matter
    the task execution time::

        class MyUser(User):
            wait_time = constant_pacing(1)
            @task
            def my_task(self):
                time.sleep(random.random())

    If a task execution exceeds the specified wait_time, the wait will be 0 before starting
    the next task.
    """

    def wait_time_func(self):
        if not hasattr(self, "_cp_last_run"):
            self._cp_last_wait_time = wait_time
            self._cp_last_run = time()
            return wait_time
        else:
            run_time = time() - self._cp_last_run - self._cp_last_wait_time
            self._cp_last_wait_time = max(0, wait_time - run_time)
            self._cp_last_run = time()
            return self._cp_last_wait_time

    return wait_time_func

 

标签:last,self,locust,time,constant,机制,cp,等待,wait
From: https://www.cnblogs.com/amber10086/p/17203928.html

相关文章

  • K8S的安全机制
    前言:机制Kubernetes作为一个分布式集群的管理工具,保证集群的安全性是其一个重要的任务。APIServer是集群内部各个组件通信的中介,也是外部控制的入口。所以Kubernetes......
  • mybatis 缓存机制
    #1、mybatis的缓存--减少和数据库的交互降低数据库压力#2、缓存机制原理第一次sql查询的时候将结果缓存(保存内存中),下一次sql查询与第一次相同,如果缓存有数据直接从缓......
  • 【Mybatis】【插件】Mybatis源码解析-插件机制
    1 前言这节我们来看看插件,插件是来干啥的呢?一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展。这样的好处是显而易见的,一是增加了框架的灵活性。二......
  • Java:包装类的缓存机制是?
    对包装类进行直接赋值时,若值在缓存区内,则会指向执行缓存区的地址。(通过new赋值则不会)缓存范围:1、Boolean,全部缓存。2、Character、Byte、Short、Intege......
  • 信号量机制
    信号量机制1、整型信号量2、记录型信号量知识回顾......
  • 包机制
    包机制为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。包语句的语法格式为:packagepkg1[.pkg2[.pkg3...]];一般利用公司域名倒置作为包名;为了能够使......
  • Java多种方法实现等待所有子线程完成再继续执行
    简介在现实世界中,我们常常需要等待其它任务完成,才能继续执行下一步。Java实现等待子线程完成再继续执行的方式很多。我们来一一查看一下。Thread的join方法该方法是Thre......
  • Qt音视频开发21-mpv内核万能属性机制
    一、前言搞过vlc内核后又顺带搞了搞mpv内核,mpv相比vlc,在文件数量、sdk开发便捷性方面绝对占优势的,单文件(可能是静态编译),不像vlc带了一堆插件,通过各种属性来set和get值,后面......
  • Java核心机制:JVM
    吾心安处即吾乡。吾乡何处不可眠1.Java语言的优缺点Java确实是从C语言和C++语言继承了许多成份,甚至可以将Java看成是类C语言发展和衍生的产物。“青出于蓝,而胜于蓝”......
  • python+playwright 学习-22理解Locator 定位机制与元素句柄 ElementHandle
    前言ElementHandle表示页内DOM元素。ElementHandles可以使用page.query_selector()方法创建。如果你能理解ElementHandle和Locator定位机制,那也就明白了selenium......