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

lib模式下Locust停止运行时如何发送总请求统计报告到Telegram群组

Lib模式Locust停止时发送全局统计报告到Telegram的实现方法

核心原理

Lib模式下Locust的所有全局运行数据、统计结果都绑定在Environment实例上,你可以通过绑定environment.quit事件的回调函数实现需求:该事件会在整个测试完全结束、所有虚拟用户都退出后触发,此时可以直接读取到最终的全局汇总统计数据,不需要依赖每个用户的on_stop方法。

实现步骤

  • 首先准备Telegram Bot的授权信息:提前在Telegram上申请Bot获取bot token,并将Bot加入目标群组获取对应的chat id
  • 编写Telegram消息发送回调函数,函数入参为Locust的Environment实例,从实例的stats.total属性中提取全局统计指标组装报告内容,调用Telegram Bot接口发送消息
  • 初始化Locust Environment实例后,将上述回调函数绑定到env.events.quit事件上
  • 正常执行测试逻辑,测试停止时会自动触发回调发送报告

代码示例

from locust import HttpUser, task
from locust.env import Environment
import requests
import gevent

# Telegram配置项
TG_BOT_TOKEN = "替换为你的Telegram Bot Token"
TG_CHAT_ID = "替换为目标群组的Chat ID"

def send_telegram_report(env: Environment):
    # 获取全局汇总统计数据
    total_stats = env.stats.total
    # 组装报告内容,可按需扩展其他指标
    report = f"""
📊 Locust测试运行完成报告
=========================
总请求数:{total_stats.num_requests}
失败请求数:{total_stats.num_failures}
请求失败率:{total_stats.fail_ratio * 100:.2f}%
平均响应时间:{total_stats.avg_response_time:.2f}ms
95分位响应时间:{total_stats.get_response_time_percentile(0.95):.2f}ms
峰值RPS:{total_stats.total_rps:.2f}
    """.strip()
    # 调用Telegram接口发送消息
    requests.post(
        url=f"https://api.telegram.org/bot{TG_BOT_TOKEN}/sendMessage",
        data={"chat_id": TG_CHAT_ID, "text": report}
    )

# 自定义测试用户类
class DemoUser(HttpUser):
    host = "https://example.com"
    @task
    def demo_request(self):
        self.client.get("/test/path")

if __name__ == "__main__":
    # 初始化Locust环境
    env = Environment(user_classes=[DemoUser])
    # 绑定测试停止事件的回调
    env.events.quit.add_listener(send_telegram_report)
    # 创建本地运行器(分布式场景下创建master runner即可)
    env.create_local_runner()
    # 启动测试:10个并发用户,孵化率1,运行30秒后停止
    env.runner.start(user_count=10, spawn_rate=1)
    gevent.sleep(30)
    env.runner.quit()

注意事项

  • 如果使用分布式运行模式,仅需要在master节点的Environment实例上绑定事件回调即可,所有worker节点的统计数据会自动汇总到master节点的stats.total中,无需在worker侧添加逻辑
  • 除了示例中提到的指标外,你可以从env.stats.total中获取最大/最小响应时间、各请求路径的单独统计、不同请求方法的统计等所有Locust默认统计的指标,按需组装报告即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:24:08