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

Locust作为库使用时如何通过编程实现分布式运行模式

Locust作为库引入的分布式模式改造方案

你现有的User类不需要任何修改,仅需调整主逻辑中Runner的创建规则,区分主节点、工作节点的启动逻辑即可。

核心依赖导入

你需要额外导入Locust的分布式Runner类:

from locust.runners import MasterRunner, WorkerRunner

完整改造后代码

from locust import HttpUser, task
from locust.env import Environment
from locust.runners import MasterRunner, WorkerRunner
from locust.stats import stats_printer, stats_history, StatsCSVFileWriter
import gevent

# 原User类逻辑完全保持不变
# host, port and reqs are external parameters
class User(HttpUser):
    host = f"{host}/{port}"

    @task
    def task1(self):
      for req in reqs:
        self.client.request(req['method'],req['path'],name=f"{port}",headers=req['headers'],data=req['body'])

    def on_start(self):
        self.client.verify = False

# 可通过命令行参数、环境变量控制节点角色,这里用变量示例
is_master = False # 主节点启动时改为True
master_host = "你的主节点实际IP"
master_port = 5557 # Locust默认通信端口,无特殊需求无需修改

env = Environment(user_classes=[User])

if is_master:
    # 主节点创建MasterRunner,监听指定端口等待工作节点接入
    env.create_master_runner(master_bind_host="0.0.0.0", master_bind_port=master_port)
    # 统计打印、CSV导出、压测启停逻辑全部保留在主节点侧
    gevent.spawn(stats_printer(env.stats))
    gevent.spawn(stats_history, env.runner)

    csvWriter = StatsCSVFileWriter(
                environment=env,
                base_filepath=f"{CWD}/outputs/{port}",
                full_history=True,
                percentiles_to_report=[0.5,0.6,0.7,0.8,0.9, 0.95, 0.99]
      )
    gevent.spawn(csvWriter)

    # 总并发数、生成速率在主节点配置,会自动分配到所有工作节点
    env.runner.start(100, spawn_rate=5)
    gevent.spawn_later(30,lambda: saveReportAndQuit(env,port))
else:
    # 工作节点创建WorkerRunner,主动连接主节点
    env.create_worker_runner(master_host=master_host, master_port=master_port)

# 主/工作节点都需要等待运行结束
env.runner.greenlet.join()

运行说明

  • 先启动主节点:将is_master设为True,运行代码,主节点会启动监听等待工作节点接入
  • 再启动所有工作节点:将is_master设为False,填写正确的主节点IP,在所有工作服务器上运行代码,节点会自动连接主节点
  • 所有工作节点的代码、依赖的外部参数(host、port、reqs等)必须和主节点完全一致,避免任务逻辑异常

注意事项

  • 确保主节点的5557、5558端口防火墙对所有工作节点开放,Locust分布式模式需要这两个端口完成通信
  • 你使用的2.4.0版本完全支持上述API,无需升级版本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:45:06