蝗虫的并行请求数量恒定

时间:2019-03-29 15:27:07

标签: python load-testing locust

我想用Locust进行一些负载测试,以便了解我的系统如何响应并行请求。

比方说,我的系统同时获得10个请求。我的第一个反应是测量这10个请求中每个请求的响应时间。我做了一个简单的locustfile.py来衡量:

from locust import HttpLocust, TaskSet, task

class UserBehavior(TaskSet):

    def on_start(self):
        pass

    def on_stop(self):
        pass

    @task(1)
    def content_query(self):
        self.client.get('/content')

class WebsiteUser(HttpLocust):
    task_set = UserBehavior
    min_wait = 1000
    max_wait = 1000

我使用了这个文件并产生了10只蝗虫。我能够得到想要的尺寸。

但是后来我意识到我想知道的是我的系统对这10个请求中的所有请求的回复速度如何。如果每个请求都需要20毫秒才能得到答复,我不知道是否:

  • 整个过程花费了20毫秒,因为每个请求都被并行处理
  • 整个过程耗时200毫秒,因为每个请求都被顺序处理

为了衡量这一点,我有以下想法:我希望我的系统在1小时之内的所有时间都承受10个请求的负载,并衡量在这段时间内处理了多少请求。

换句话说,一旦10个请求之一成功,就应执行另一个请求来代替它。

如何使用蝗虫来做到这一点?

我有一个使用请求成功处理程序的想法,如Locust文档中所述:

from locust import HttpLocust, TaskSet, task, events

def my_success_handler(request_type, name, response_time, response_lenght, **kw):
    print("Success")

events.request_success += my_success_handler

这可以让我知道一个请求何时成功,但是接下来呢?我不确定是否可以通知某个蝗虫请求成功。

0 个答案:

没有答案