你能为 Locust 中的 TaskSet(s) 设置任务比率 Python

Can you set a task ratio for TaskSet(s) in Locust Python

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)。

TaskSets 也可以使用与单个任务相同的 @task 装饰器来加权,如 TaskSet docs, and you can weight them that way. Alternatively, the docs also explain that the tasks attribute 中所述,可以将其定义为字典而不是列表,您可以用它们来赋予权重,甚至对于任务集。应用于您的示例代码,它看起来像这样:

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

这应该会在每次生成用户时为您的任务集赋予 2:5 的权重。 TaskSet 中的各个任务都有自己的权重。