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
相关产品推荐
相关产品推荐

