gpt4 book ai didi

locust-TaskSet 类 vs 函数任务

转载 作者:行者123 更新时间:2023-12-03 02:23:17 46 4
gpt4 key购买 nike

我是 Locust 新手,我正在尝试编写负载测试。我想知道将我想要执行的任务定义为可调用函数与将它们定义为 locust TaskSet 类有什么区别。例如:

class MyTaskSet(TaskSet):
@task(2)
def index(self):
self.client.get("/")

@task(1)
def about(self):
self.client.get("/about/")

class MyLocust(HttpLocust):
task_set = MyTaskSet

或者:

class about(TaskSet)
@task
def about(self):
self.client.get("/about/")
self.interrupter()

class index(TaskSet)
@task
def index(self)
self.client.get("/")
self.interrupter()

class MyTaskSet(TaskSet)
tasks = {index:2 , about: 1}

class MyLocust(HttpLocust):
task_set = MyTaskSet

上面2个有什么区别?谢谢

最佳答案

TL;DR

两者在负载分配方面存在巨大差异。

详细说明

想象一下以下设置,其中一个任务比另一个任务慢得多:

class MyTaskSet(TaskSet):
@task(2)
def fast(self):
self.locust.client.get("/api",name="fast_check")

@task(1)
def slow(self):
time.sleep(1)
self.locust.client.get("/api",name="slow_check")

class MyLocust(HttpLocust):
task_set = MyTaskSet

下面是嵌套任务集的相同设置:

class Fast(TaskSet):
@task(1)
def fast(self):
self.locust.client.get("/api",name="fast_check")

class Slow(TaskSet):
@task(1)
def slow(self):
time.sleep(1)
self.locust.client.get("/api",name="slow_check")


class MyTaskSet(TaskSet):
tasks = {Fast:2 , Slow: 1}


class MyLocust(HttpLocust):
task_set = MyTaskSet

当您运行这两个脚本时,您会注意到,对于第一个设置,负载在您权衡任务时大致分布。 1/3 的 HTTP 调用转到 slow_check 任务,2/3 转到 fast_check 任务。

但是,在第二个设置中,更多的 HTTP 调用会转到 fast_check。看起来好像 Locust(= 用户)根据 1/3-2/3 权重分配给一个 TaskSet,但由于 Locust 完成得更快,它可以更快地从 Fast TaskSet 中安排下一个任务,如下所示出色地。

我不确定这是一个错误还是一个功能,因为文档中没有具体提及。

关于locust-TaskSet 类 vs 函数任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46022068/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com