0

在我的场景中,我在完成 SequentialTask​​Set 后停止用户。同时,我需要定期启动用户,例如每 100 毫秒。可能有一些用户已经在运行或没有运行,这无关紧要。但是,如果有一个用户已经在运行,locust 不会创建一个新的,即它不会在用户之上创建。

def spawn_users(env):
    while True:
        env.runner.start(1, spawn_rate=50)
        gevent.sleep(0.1) # sleep for 100 ms

for x in range(1000):
    gevent.spawn(spawn_users, env)

NB 显然,我可以一次创建 50/100/任意数量的用户,但我需要一个一个地创建。

总结:无论有多少用户已经在运行,以及他们花费了多少时间执行任务,都会定期创建 locust 用户。

注意:如果这个用例更适合它们,我也愿意尝试其他负载测试框架。

4

2 回答 2

0

我用一个简单的技巧解决了它。我不是一次创建 1 个用户,而是使用现有用户创建 +1。

def spawn_users(env):
while True:
    env.runner.start(env.runner.user_count + 1, spawn_rate=50)
    gevent.sleep(0.1) # sleep for 100 ms

env.runner.user_count提供当前总用户,因此,每次睡眠后,它会再创建一个。

于 2021-03-23T05:22:51.590 回答
0

一种更受支持且可能更简单的方法是使用负载测试形状。

https://docs.locust.io/en/stable/generating-custom-load-shape.html

最终结果与您已经完成的类似,但可能会给您更多的自由和抽象的稳定性。

于 2021-03-23T14:46:12.017 回答