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

如何在Locust多任务中共享company_id,实现员工并行创建?

可行方案:拆分Locust任务并行创建员工

完全可以实现。你只需要将company_id存储为HttpUser实例的属性,这样不同任务之间就能共享这个值。以下是具体的实现方式:

方案1:每个用户实例独立创建公司和员工

这种方式下,每个Locust用户会先创建自己的公司,然后持续为该公司创建员工,多个用户之间可以并行执行员工创建任务:

from locust import HttpUser, task

class CompanyAPI(HttpUser):
    def on_start(self):
        # 启动时先创建公司,确保后续任务有可用的company_id
        resp = self.client.post(
            "/companies",
            json={"name": "Company Name"}
        )
        self.company_id = resp.json()["id"]

    @task(10)  # 权重设高,让这个任务执行更频繁
    def create_employee(self):
        self.client.post(
            "/employees",
            json={
                "first_name": self.locust_name,  # 用用户标识区分员工,也可以用随机字符串
                "last_name": "Smith",
                "company": self.company_id,
            },
        )

这里用on_start方法在用户启动时自动创建公司,避免依赖任务调度的随机性,确保员工创建任务能拿到有效的company_id。

方案2:所有用户共享同一个公司ID

如果希望所有Locust用户都为同一个公司创建员工,需要用全局变量加线程锁来保证公司只被创建一次:

from locust import HttpUser, task
import threading

# 全局变量存储共享的公司ID,线程锁保证创建操作的原子性
shared_company_id = None
company_lock = threading.Lock()

class CompanyAPI(HttpUser):
    def on_start(self):
        global shared_company_id
        with company_lock:
            if not shared_company_id:
                resp = self.client.post(
                    "/companies",
                    json={"name": "Shared Company Name"}
                )
                shared_company_id = resp.json()["id"]
        # 将共享ID赋值给实例属性,方便后续任务调用
        self.company_id = shared_company_id

    @task(10)
    def create_employee(self):
        self.client.post(
            "/employees",
            json={
                "first_name": f"{self.locust_name}_emp",
                "last_name": "Smith",
                "company": self.company_id,
            },
        )

关键说明

  • 利用HttpUser的实例属性(如self.company_id)可以在同一用户的不同任务间共享数据
  • on_start方法会在每个用户实例启动时执行一次,适合做初始化操作
  • 通过调整任务权重(@task(n))可以控制不同任务的执行频率,让员工创建任务更频繁
  • 多用户并行执行时,每个用户的员工创建请求会同时发送,自然实现了员工的并行创建

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:55:23