首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使Locust在任务运行之间等待

使Locust在任务运行之间等待
EN

Stack Overflow用户
提问于 2019-05-02 05:39:07
回答 1查看 1.7K关注 0票数 2

我正在使用Locust将消息推送到RabbitMQ队列中。我可以使用locust.io-demo存储库中的RabbitMQ示例轻松完成此操作,但现在我需要强制单个任务在每次调用之间等待1分钟。

在我的测试中,我需要每分钟将100条消息推送到一个队列中,因为这个系统将以一分钟为增量接收“突发”消息。我尝试过实现这个功能,但是没有成功。这是我尝试的第一件事:

代码语言:javascript
复制
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秒就会生成一个新请求。

然后我试着这样做:

代码语言:javascript
复制
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秒?我是不是遗漏了什么东西?

EN

回答 1

Stack Overflow用户

发布于 2020-10-28 16:00:11

使用此代码

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55943025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档