You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Locust框架中如何为多个TaskSet设置执行权重比例

Locust 不同 TaskSet 配置执行比例的实现方案

完全可以实现该需求,Locust 原生支持 TaskSet 级别的权重配置,且 TaskSet 内部的任务调度和外层 TaskSet 的调度逻辑相互独立,不会互相影响。以下是两种常用实现方式:

方式一:通过 tasks 字典配置权重(最简洁)

直接将 User 类的 tasks 属性从列表替换为字典,字典的键为对应 TaskSet 类,值为你需要设置的权重值,即可自动按照权重比例调度不同的 TaskSet。

示例代码:

from locust import TaskSet, HttpUser, task, between

class UserBehavior1(TaskSet):
    # 内部 task 均不指定权重,默认权重均为1,执行概率均等
    @task
    def task1(self):
        ...

    @task
    def task2(self):
        ...

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

    @task
    def task2(self):
        ...

class User(HttpUser):
    wait_time = between(n,m)
    host = 'https://example.com'
    # 此处配置2:5的调度比例,和需求完全匹配
    tasks = {UserBehavior1: 2, UserBehavior2: 5}

方式二:通过 schedule_task 手动调度(灵活性更高)

如果需要在调度 TaskSet 前做额外的预处理逻辑,可以在 User 类中通过 @task 装饰器标注调度方法,给不同方法设置对应权重,再调用 schedule_task 加载对应的 TaskSet。

示例代码:

class User(HttpUser):
    wait_time = between(n,m)
    host = 'https://example.com'
    
    @task(2)
    def load_behavior1(self):
        # 可在此处添加调度前的自定义逻辑
        self.schedule_task(UserBehavior1)
    
    @task(5)
    def load_behavior2(self):
        self.schedule_task(UserBehavior2)

说明

两种方式下,TaskSet 内部的任务调度都是独立计算的,只要你不给内部的 @task 装饰器传权重参数,内部所有任务的执行概率都是均等的,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Jack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 17:24:04