TaskSet类
定义Locust用户将执行什么样的任务的类。当TaskSet开始运行时,它将从tasks属性中选择一个任务,执行它,调用它的wait函数,它将在min_wait和max_wait毫秒之间休眠一个随机数 。然后它将安排另一个执行任务等等。
TaskSet可以嵌套,这意味着TaskSet的tasks属性可以包含另一个TaskSet。如果嵌套的TaskSet计划执行,它将被实例化并从当前执行的TaskSet中调用。然后,当前运行的TaskSet中的执行将被移交给嵌套的TaskSet,该TaskSet将继续运行,直到它抛出一个InterruptTaskSet异常,这在TaskSet.interrupt()被调用时完成 。(执行将继续在第一个TaskSet)。
client
引用父类Locust的click属性。
interrupt(reschedule = True )
中断TaskSet并将执行控制权交给父TaskSet。
如果reschedule为True(默认),父Locust将立即重新计划并执行新任务
这个方法不应该被父TaskSet(即立即附加到Locust类“ task_set”属性)的TaskTable调用,而是在层次结构下面的嵌套TaskSet类中。
locust =无
当TaskSet已被实例化时,将引用Locust类实例
max_wait =无
执行Locust任务之间的最长等待时间。可用于覆盖父Locust类中定义的max_wait,如果在TaskSet上未设置,将会使用Locust类中的。
min_wait =无
执行Locust任务之间的最短等待时间。可用于覆盖父Locust类中定义的min_wait,如果在TaskSet上未设置,将使用Locust类中的。
parent =无
当TaskSet已被实例化时,将引用父TaskSet或Locust类实例。适用于嵌套的TaskSet类。
schedule_task(task_callable,args = None,kwargs = None,first = False )
将任务添加到Locust的任务执行队列。
参数:
task_callable:要执行的Locust任务
args:将传递给任务可调用的参数
kwargs:将传递给任务可调用的关键字参数的Dict。
first:可选关键字参数。如果为True,则任务将首先放在队列中。
列出代表Locust用户要执行的任务。
如果任务是一个列表,则要执行的任务将被随机挑选。
如果任务是一个(callable,int)二元组列表,或者一个{callable:int} dict,那么要执行的任务将被随机挑选,但是每个任务将根据它的相应的int值进行加权。所以在以下情况下,ThreadPage将比write_post更可能被挑选十五倍:
class ForumPage(TaskSet):
tasks = {ThreadPage:15, write_post:1}
task decorator(任务装饰器)
task(weight=1)
使用@task修饰符可以在一个TaskSet类中添加多个任务,并且可以指定任务的执行比重
class ForumPage(TaskSet):
@task(100)
def read_thread(self):
pass
@task(7)
def create_thread(self):
pass