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

Locust负载测试如何为不同API分配独立用户并配置权重及调用间隔

Locust 分用户组实现指定API测试场景方案

你现有的代码问题在于将所有接口任务放在同一个用户类中,无法实现不同用户组执行不同任务的需求,调整后的实现代码如下:

from locust import User, task, between, TaskSet

# 第一组用户任务集:仅调用前5个API,按权重分配
class FirstFiveAPITasks(TaskSet):
    # 每次调用后固定等待15秒
    wait_time = between(15, 15)

    @task(10)
    def get_api_1(self):
        self.client.get("/v1/api_1")

    @task(50)
    def get_api_2(self):
        self.client.get("/v1/api_2")

    @task(20)
    def get_api_3(self):
        self.client.get("/v1/api_3")

    @task(10)
    def get_api_4(self):
        self.client.get("/v1/api_4")

    @task(10)
    def get_api_5(self):
        self.client.get("/v1/api_5")

# 第一组用户类:权重设置为3,对应3个测试用户
class FirstGroupUser(User):
    tasks = [FirstFiveAPITasks]
    weight = 3
    # 替换为你实际的被测服务域名
    host = "http://your-api-domain.com"

# 以下为后3个API对应的单独用户类,每个类权重为1,各对应1个测试用户
class API6User(User):
    wait_time = between(5, 5)
    weight = 1
    host = "http://your-api-domain.com"

    @task
    def get_api_6(self):
        self.client.get("/v1/api_6")

class API7User(User):
    wait_time = between(5, 5)
    weight = 1
    host = "http://your-api-domain.com"

    @task
    def get_api_7(self):
        self.client.get("/v1/api_7")

class API8User(User):
    wait_time = between(5, 5)
    weight = 1
    host = "http://your-api-domain.com"

    @task
    def get_api_8(self):
        self.client.get("/v1/api_8")

关键实现说明

  • 不要使用time.sleep()做等待,Locust内置的wait_time是非阻塞实现,不会影响压测并发调度,between(15,15)代表固定等待15秒
  • 通过weight参数控制不同用户类的用户分配比例,本次设置FirstGroupUser权重为3,其余三个单接口用户类权重各为1,启动压测时设置总用户数为6,孵化率为6,即可完全匹配你的场景需求
  • 所有HTTP请求统一使用self.client.get发送,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:18:00