Я использую 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 секунд между каждым выполнением?Есть ли свойство, которое мне не хватает?