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

Locust中如何为各用户类分配固定数量的运行用户

问题原因

你之前使用的任务权重是概率分配机制,仅能在总用户量极大的场景下近似达到设定比例,当总用户数较少时(比如你需要的总用户仅5个),无法保证精确的数量分配,自然会出现User_2、User_3分配到超过1个用户的情况。

解决方案(推荐,适用于Locust 2.8及以上版本)

直接为每个TaskSet绑定独立的HttpUser子类,使用fixed_count属性指定每个用户类的固定启动数量,即可严格实现你要的分配规则,示例代码如下:

from locust import HttpUser, TaskSet, task

class User_1(TaskSet):
    # 此处写User_1对应的内部任务逻辑
    @task
    def your_task1(self):
        self.client.get("/your-api-1")

class User_2(TaskSet):
    # 此处写User_2对应的内部任务逻辑
    @task
    def your_task2(self):
        self.client.get("/your-api-2")

class User_3(TaskSet):
    # 此处写User_3对应的内部任务逻辑
    @task
    def your_task3(self):
        self.client.get("/your-api-3")


# 为每个TaskSet单独定义HttpUser类,设置固定用户数
class API_User1(HttpUser):
    tasks = [User_1]
    fixed_count = 3 # 严格启动3个该类用户

class API_User2(HttpUser):
    tasks = [User_2]
    fixed_count = 1 # 严格启动1个该类用户

class API_User3(HttpUser):
    tasks = [User_3]
    fixed_count = 1 # 严格启动1个该类用户

使用该方案运行时,Locust会完全忽略命令行传入的总用户数配置,严格按照每个HttpUser类的fixed_count值启动对应数量的用户,完全符合你的需求。

旧版本Locust兼容方案

如果你使用的是2.8以下不支持fixed_count的版本,可以通过test_start钩子手动控制用户生成逻辑:

  • 关闭Locust的自动用户生成
  • 在钩子函数中按照你需要的数量手动创建对应类的用户实例即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:45:01