x__miller_x
@x__miller_x

Как получить ID воркера в Locust (python)?

Дня доброго! Возникла необходимость написать пару тестов для нагрузки системы в Locust, но внезапно возникла проблема с ограничениями этой самой системы.

Суть такова: мне нужно привязать конкретного воркера Locust (поток) к определенному аккаунту. Например, thread #1 - user1, thread #2 - user2. Т.е., чтобы все действия в отдельно взятом потоке выполнялись строго одним пользователем. Но ни в документации, ни где-либо еще не нашел, как вообще можно получить ID конкретного потока, выполняющего код, либо вообще количество потоков хотя бы (кроме как из коммандной строки выцеплять через sys.argv)

Есть ли вообще какой-то воркэраунд?
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ответы на вопрос 1
SvinkaBacilka
@SvinkaBacilka
личинка front-end Developer-а
Я решил эту проблему следующим образом. Создал дополнительный класс с необходимыми для меня атрибутами (айди, например) и наследовал его классом что описывает поведение locust юзера. После чего при создании юзера присваиваю ему уникальный айди, который генерируется сторонней функцией. Выглядит это примерно так:

class TestAttributes:
    def __init__(self):
        self.id = None


class UserBehavior(TaskSequence, TestAttributes):
    def on_start(self):
        self.id = generate_id()


Этот идентификатор использую в логах и в имени запроса.

self.client.post(url=my_url, data=my_body, headers=my_headers, name='Test request: %s' % self.id)


Есть Вариант ещё проще. Просто добавь атрибут с ИД в класс что будет описывать поведение юзера.
class UserBehavior(TaskSequence):
    user_id = generate_id()

И в следующих методах обращаться к этому ИД таким образом:
self.user_id
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы