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

如何基于UI传入的host值为Locust动态分配TaskSet任务集

错误原因说明
  • 首次报错(无tasks定义):初始代码仅在on_start方法内声明了局部变量tasks,未赋值给User实例的self.tasks属性,且Locust初始化User类时会提前校验tasks配置,初始状态无有效tasks就会抛出异常。
  • 二次报错(KeyError: 0):Locust运行时调度任务时要求tasks属性为列表类型,你赋值的是字典格式,random.choice尝试对字典按索引取值时就会抛出键不存在的错误。同时保留的占位空任务会和动态添加的任务冲突,默认调度流程会持续执行空任务。
可直接运行的实现代码

无需重启已运行的Locust实例,修改代码后Locust的热重载机制会自动加载生效:

from locust import HttpUser, TaskSet, task, StopUser

class HelloTask(TaskSet):
    @task
    def something(self):
        print("Hello")

class WorldTask(TaskSet):
    @task
    def something(self):
        print("World")

class LoadTestUser(HttpUser):
    # 初始赋值空列表,通过Locust初始化校验
    tasks = []
    
    def on_start(self):
        # 根据UI传入的host动态分配任务
        if self.host == "hello":
            # 列表格式,如需配置权重可重复添加对应类,例如[HelloTask, HelloTask]等价于权重2
            self.tasks = [HelloTask]
        else:
            self.tasks = [WorldTask]
        # 手动触发首次任务调度
        self.schedule_task(self.get_next_task())
        # 终止当前默认调度流程,避免执行空逻辑
        raise StopUser()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:48:01