我正在使用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。
我所看到的是,在Locust UI中,每10秒就会生成一个新请求。
然后我试着这样做:
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秒?我是不是遗漏了什么东西?
发布于 2020-10-28 16:00:11
使用此代码
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()https://stackoverflow.com/questions/55943025
复制相似问题