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

Locust是否支持输出包含单事务详细指标的CSV报告?

Locust 输出单事务详细CSV报告的方案
  • 原生Locust自带的csv-full-history确实只输出聚合类数据,没法直接导出每一笔请求的明细指标,和你遇到的情况一致。

  • 要拿到你需要的单事务明细(包含timestamp、test_name、url、response_size、latency、connect_time、ttfb等字段),得通过自定义事件监听来实现:

    1. 在你的Locust脚本里导入events模块,监听request_success和request_failure两个事件,这两个事件会在每笔请求完成后触发
    2. 写一个回调函数,从事件参数里提取你需要的所有字段
    3. 用Python的csv模块把这些数据逐行写入CSV文件
  • 给你个现成的代码片段参考:

import csv
from locust import events
from datetime import datetime

# 先写入CSV表头
with open("request_details.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.writer(f)
    writer.writerow(["timestamp", "test_name", "url", "response_size", "latency", "connect_time", "ttfb", "success"])

def record_request_details(request_type, name, response_time, response_length, exception, context, **kwargs):
    # 提取各项指标
    timestamp = datetime.utcnow().isoformat()
    test_name = name
    url = context.get("url", "")
    response_size = response_length
    latency = response_time
    connect_time = context.get("connect_time", 0)
    ttfb = context.get("ttfb", 0)
    success = exception is None  # 无异常则请求成功
    
    # 追加写入CSV
    with open("request_details.csv", "a", newline="", encoding="utf-8") as f:
        writer = csv.writer(f)
        writer.writerow([timestamp, test_name, url, response_size, latency, connect_time, ttfb, success])

# 注册事件监听
events.request_success.add_listener(record_request_details)
events.request_failure.add_listener(record_request_details)
  • 额外提醒:
    • 高并发场景下频繁打开关闭文件可能拖慢性能,你可以改成用队列批量写入,或者用线程安全的文件操作方式
    • 如果用Locust分布式运行,每个worker节点会生成自己的CSV文件,测试结束后需要手动合并这些文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 22:32:44