在计时器上调度蝗虫任务

时间:2020-07-28 19:05:49

标签: python performance locust

我希望能够有一个以指定间隔运行的任务。例如,假设我要测试3个端点,但是每30秒我要ping /status/端点

class SomeTasks(TaskSet):
    @task
    self.get("/home/")

    @task
    self.get("/info/")
    
    @task
    self.get("/products/")

    @task
    self.get("/status/")

class SomeUser(FastHttpUser):
    tasks = [SomeTasks]
    wait_time = between(0, 0)

不确定如何运行,以便像往常一样随机选择/home//info//products/,但每30秒检查一次状态。也许可以将其放在SomeUser类中?

1 个答案:

答案 0 :(得分:0)

听起来您希望default-src 'self';script-src 'self' 'report-sample' www.google-analytics.com的ping与您的其他用户工作分开。您希望Locust生成许多用户,使其在测试中反复命中/status//home//info/,但是您希望一个“用户”每次ping /products/ 30秒?如果是这样,这是可能的,但不是很简单。我会在正常的/status/之外制作一个单独的函数,该函数在自己的计时器上重复运行,但仍向Locust报告。

有多种方法可以执行此操作,但我倾向于使用@task之类的Locust events使Locust在测试开始时调用一个函数。在该函数中,创建一个每30秒在循环中ping @events.test_start.add_listener端点的greenlet,并向Locust报告。下面的基本文件以及使循环取决于测试状态的条件是可选的,摘自Locust examples

/status/