首页 > 解决方案 > 您可以在 Locust Python 中为 TaskSet(s) 设置任务比率吗

问题描述

class UserBehavior1(TaskSet):
        @task
        def task1:...

        @task
        def task2:...

class UserBehavior2(TaskSet):
        @task
        def task1:...

        @task
        def task2:...

class User(HttpUser):
        wait_time = between(n,m)
        host = 'https://example.com'
        tasks = [UserBehavior1, UserBehavior2]

有没有办法在 Locust 中指定 TaskSet(s) 的比率?我知道@task 装饰器接受了一个额外的参数来增加权重,但我不确定它在这种情况下是否有效。我希望每个 TaskSet 中的任务的权重相等,但我希望 TaskSet(s) 以不同的比率执行(比如说 2:5)。

标签: pythonlocust

解决方案


TaskSet 也可以使用与@task单个任务相同的装饰器进行加权,如TaskSet 文档中所述,您可以通过这种方式对它们进行加权。或者,文档还解释说tasks attribute可以将其定义为字典而不是列表,并且您可以对它们赋予权重,即使对于任务集也是如此。应用于您的示例代码,它看起来像这样:

class User(HttpUser):
    wait_time = between(n,m)
    host = 'https://example.com'
    tasks = {UserBehavior1: 2, UserBehavior2: 5}

每次生成用户时,这应该使您的任务集的权重为 2:5。然后,TaskSet 中的各个任务都有自己的权重。


推荐阅读