Python Locust 模块

17 Mar 2025 | 5 分钟阅读

Python Locust:与 JMeter 和 Tsung 不同,这是一个用于负载测试服务器的 Python 工具。

厌倦了当前用于基准测试和负载测试现有服务器的工具,我最近在一个项目中发现了一个名为 Locust 的开源工具。

通过阅读本教程,您将能够使用此负载测试工具。这将让您大致了解服务器每秒支持多少请求(RPS)。

Locust 是一个易于使用的、分布式的、用户负载测试工具。它旨在对网站(或其他系统)进行负载测试,并确定系统可以处理的并发用户数量。

为什么这个模块叫做 Locust?

这个想法是,在测试期间,会有大量的 locust(蚱蜢)攻击您的网站。每个 Locust(蚱蜢或测试用户)的行为由您定义,并且集群过程可以从 Web UI 中实时监控。这将帮助您在向真实用户开放之前,应对测试并识别代码中的瓶颈。

Locust 是完全基于事件的,因此可以在单台机器上支持数百万并发用户。与其他许多基于事件的应用程序不同,它不使用回调。

相反,它通过事件使用轻量级进程。您的网站的每个 Locust 集群都运行在其自己的进程(或者更准确地说,是 greenlet)中。这使您能够用 Python 编写非常有表现力的场景,而不会使您的代码因回调而混乱。

特点或功能

1. 用纯 Python 编写用户测试场景

如果您希望用户循环、执行某些条件行为或进行一些计算,可以使用 Python 提供的正常编程结构。Locust 在其 greenlet(一个轻量级进程/协程)中运行每个用户。这使得您可以像编写普通(阻塞式)Python 代码一样编写测试,而无需使用回调或其他机制。由于您的场景“只是 Python”,因此您可以使用标准的 IDE 和版本控制来管理您的测试,就像管理普通代码一样(而不是像某些使用 XML 或二进制格式的其他工具那样)。

2. 分布式和可伸缩 - 支持数百万用户

Locust 可以轻松地在多台机器上运行负载测试。它是基于事件的(使用 gevent),因此单个进程可以处理数百万并发用户。虽然可能有其他工具可以在给定硬件上实现更高的每秒请求数,但 Locust 用户每个用户的开销很低,这使其非常适合测试高度并发的任务。

3. 在线 UI(Web 用户界面)

Locust 提供了一个用户友好的 Web 界面,可以实时显示测试的进度。您可以在测试运行时更改负载。它也可以在没有 UI 的情况下运行,这使得 CI/CD 测试变得容易。

4. 可以测试任何系统

虽然 Locust 与网站/服务配合使用,但几乎可以用于测试任何系统或协议。为要测试的内容编写一个用户,或者使用社区创建的现有用户。

5. 可破解

Locust 的代码库故意保持精简,并且不会开箱即用地处理所有事情。相反,我们试图让它易于适应您可能遇到的任何情况,只需使用普通的 Python 代码。要将报告数据发送到您喜欢的数据库和图表系统,包装对 REST API 的调用以处理您的系统细节或运行自定义负载配置;没有什么可以阻止您!

命令行界面

该模块为我们提供了一种通过命令行界面运行负载测试的方法。这使我们可以轻松地实现自动化的负载测试流程。在运行 Locust 时添加 no-web 参数。您需要包含主机、用户数和孵化率。

Locust -f locustfile.py --no-web --host your_host -c 1000 -r 100

  1. c - 用户数
  2. f - 文件路径
  3. no-web - 无 Web 界面运行模拟
  4. r - 孵化率

安装 Python Locust 模块

使用 pip 命令安装 Locust。

命令

Locust 安装成功后,Locust 命令应可在您的 shell 中使用。

查看更多可用选项

命令

使用 LOCUST 模块进行负载测试

Locust 是一个开源负载测试工具。负载测试是对软件进行的测试,旨在在特定预期负载下评估系统的弹性/行为。Locust 的目标是负载测试网站,并检查系统可以处理的并发用户数量。

在 locust 测试期间,大量 Locust 将攻击目标,即网站。每个 Locust 的行为都是可配置的,并且集群过程会实时从 Web UI 中监控。

源代码

上述代码的解释

首先导入所有必需的模块。然后定义函数和类。

当模拟用户开始执行该 TaskSet 类时,会调用 on_start 方法。管理员登录并检索其访问令牌。task_sets 属性应指向一个 TaskSet 类,该类指示客户的状态。

启动 Locust

要运行上述代码,请创建一个名为 locustfiles.py 的 Python 文件,然后在上述创建的文件所在的目录中打开终端。然后,在终端中输入以下命令。

注意:默认情况下,Locust 会查找 locustfiles.py。

成功执行上述命令后,您应该打开一个浏览器并访问 http://127.0.0.1:8089

Locust UI 将如下所示

输出

Python Locust Module

总结

Locust 是一个非常有用的 Python 负载测试工具。测试 REST API 非常简单。但是,测试非 RESTful API 可能会有点困难。我们已经向您展示了一种测试非 RESTful API 的方法。还有其他工具,如 JMeter,用于负载测试。JMeter 的学习曲线很高,每次需要测试比“Hello World”应用程序更复杂的东西时,您都会遇到这个问题。因此,您的选择完全取决于您。

感谢您的阅读!!!


下一主题Python Time 模块