Locust:如何让Locust运行特定时间
官方的 locustio 文档 介绍了如何编写简单的 locust 任务,这些任务会一直运行下去。
我找不到如何设置负载测试持续特定时间的方法,这样测试就可以在指定的时间后自动停止。
我不需要通过网页界面来操作,命令行或代码的方式就很好。
6 个回答
你可以通过抛出一个叫做 StopLocust 的异常来停止一个单独的绿色线程(也叫“locust”)。所以你可以在你的任务里加一个检查时间的保护措施。
这个功能没有详细的文档说明,未来可能会有变化,但在0.7.2版本中是可以用的!
虽然我来得有点晚,但我发现了一个可以用来停止测试的方法,希望对你有帮助。
stop_timeout = 20
在你的 locust 类里面。
哦,对了,它接受的值是以 秒 为单位的。
locust现在支持运行时参数--run-time=1h20m
。我从主分支安装了locust。(可以查看GitHub上的问题)。我觉得这个功能在0.9版本中正式发布了。
可能现在回答这个问题有点晚了,但对将来的某些人可能会有帮助。现在,Locust支持 -t
或 --run-time
选项,可以在使用 --headless 选项运行 Locust 时指定持续时间。从 locust --help
可以看到相关信息:
-t RUN_TIME, --run-time=RUN_TIME
Stop after the specified amount of time, e.g. (300s,
20m, 3h, 1h30m, etc.). Only used together with --no-
web
这个回答已经过时了。现在 Locust 有一个 -t / --run-time 参数,可以用来指定运行时间。具体可以查看这个链接:https://docs.locust.io/en/stable/running-without-web-ui.html?highlight=run-time#setting-a-time-limit-for-the-test
我最近开始自己使用 Locust,但不幸的是,Locust 0.7.1 版本并没有提供根据时间来结束测试的方法。
不过,它确实提供了一种根据请求数量来结束测试的方法。如果你通过命令行界面运行 Locust,可以指定在处理完一定数量的请求后停止执行。从 locust --help
的输出中可以看到:
-n NUM_REQUESTS, --num-request=NUM_REQUESTS
Number of requests to perform. Only used together with --no-web
所以,你可以用类似下面的命令开始一个会话:
# locust --clients=20 --hatch-rate=2 --num-request=500
当处理完 500 个请求后,它就会结束测试。