как запускать новых пользователей каждую секунду в locust как библиотеке
В моем сценарии я останавливаю пользователей после завершения SequentialTaskSet. В то же время мне нужно запускать пользователей через равные промежутки времени, например каждые 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 или любое количество пользователей одновременно, но мне нужно создавать одного за другим.
Резюме: Создавайте саранчовых пользователей через равные промежутки времени, независимо от того, сколько пользователей уже работает и сколько времени они тратят на выполнение задач.
Примечание. Я также готов попробовать другие фреймворки для нагрузочного тестирования, если этот вариант использования им больше подходит.
2 ответа
Я решил это с помощью простого трюка. Вместо того, чтобы создавать по одному пользователю за раз, я создаю +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
Более поддерживаемый и, возможно, более простой способ сделать это - использовать форму нагрузочного теста.
https://docs.locust.io/en/stable/generating-custom-load-shape.html
Конечный результат аналогичен тому, что вы уже сделали, но может дать вам немного больше свободы и абстрактной стабильности.