【问题标题】:Make Locust Wait Between Task Runs让 Locust 在任务运行之间等待
【发布时间】:2019-09-20 10:03:55
【问题描述】:

我正在使用 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

然后我再次启动 Locust,有 1 个用户,孵化率为 1。奇怪的是,我看到了相同的结果 - 每 10 秒有 1 个新请求。哎呀,我什至尝试使用gevent.time 而不是time.time,但我仍然得到了相同的结果。

如何让我的发布任务在每次执行之间等待 30 秒?有没有我遗漏的财产?

【问题讨论】:

标签: python rabbitmq locust


【解决方案1】:

使用此代码

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()

【讨论】:

    猜你喜欢
    • 2013-03-22
    • 1970-01-01
    • 2021-11-07
    • 2015-06-04
    • 2020-04-24
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    相关资源
    最近更新 更多