【问题标题】:locust-TaskSet class vs function tasklocust-TaskSet 类 vs 函数任务
【发布时间】:2017-09-03 09:35:29
【问题描述】:

我是 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个有什么区别? 谢谢

【问题讨论】:

    标签: locust


    【解决方案1】:

    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。根据 1/3-2/3 的权重,看起来好像 Locust(= 用户)被分配给 TaskSet,但由于 Locust 完成得更快,它可以更快地从 Fast TaskSet 安排下一个任务出色地。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-26
      • 2019-09-20
      • 1970-01-01
      • 2013-07-05
      相关资源
      最近更新 更多