我正在使用Locust将消息推送到RabbitMQ队列中。我可以使用locust.io-demo存储库中的RabbitMQ示例轻松完成此操作,但是现在我需要强制单个任务在每次调用之间等待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秒执行一次,因为这是最小和最大等待时间的值。然后,我以1位用户和1的孵化率启动了Locust。
我看到的是每10秒在Locust UI中生成一个新请求。
然后我尝试了以下方法:
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
然后我再次以1位用户和1的孵化率启动了Locust。奇怪的是,我看到了相同的结果-每10秒发出1个新请求。哎呀,我什至尝试使用gevent.time
代替time.time
,但我仍然得到相同的结果。
如何使我的发布任务在每次执行之间等待30秒?是否有我所缺少的财产?
答案 0 :(得分:0)
使用此代码
from rabbitmq import get_client
import time
from locust import Locust, TaskSet, task, events,between
class RabbitTaskSet(TaskSet):
@task
def publish(self):
get_client().publish()
class MyLocust(Locust):
task_set = RabbitTaskSet
wait_time = between(5000, 10000)
def on_locust_stop_hatching():
get_client().disconnect()