Сделать саранчу ждать между запусками задач - PullRequest
1 голос
/ 02 мая 2019

Я использую Locust для отправки сообщений в очередь RabbitMQ.Я могу легко это сделать, используя образец RabbitMQ из репозитория locust.io-demo , но теперь мне нужно заставить одну задачу ждать 1 минуту между каждым вызовом.

В моем тесте мне нужно помещать 100 сообщений в очередь каждую минуту, так как эта система будет получать сообщения «пакетами» с шагом в одну минуту.Я пытался реализовать это, но безуспешно.Вот первое, что я попробовал:

from rabbitmq import get_client
import time

from locust import Locust, TaskSet, task, events

class RabbitTaskSet(TaskSet):
    @task
    def publish(self):
        get_client().publish()

class MyLocust(Locust):
    task_set = RabbitTaskSet
    min_wait = 30000
    max_wait = 30000

def on_locust_stop_hatching():
    get_client().disconnect()

events.locust_stop_hatching += on_locust_stop_hatching

Я предполагал, что метод publish будет выполняться один раз каждые 30 секунд, поскольку это то, что является значением для минимального и максимального времени ожидания.Затем я запустил Locust с 1 пользователем и коэффициентом штриховки 1.

Я увидел, что каждые 10 секунд в пользовательском интерфейсе Locust генерируется новый запрос.

Затем я попробовал это вместо:

class RabbitTaskSet(TaskSet):
    @task
    def publish(self):
        get_client().publish()
        time.sleep(30)

class MyLocust(Locust):
    task_set = RabbitTaskSet
    # min_wait = 30000
    # max_wait = 30000

Затем я снова запустил Locust с 1 пользователем и коэффициентом штриховки 1. Как ни странно, я видел те же результаты - 1 новый запрос каждые 10 секунд.Черт возьми, я даже попытался использовать gevent.time вместо time.time, но все равно получил те же результаты.

Как я могу заставить мою задачу публикации ждать 30 секунд между каждым выполнением?Есть ли свойство, которое мне не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...