具有轨迹的恒定并行请求数

2024-04-19 10:51:14 发布

您现在位置:Python中文网/ 问答频道 /正文

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

假设我的系统同时收到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毫秒,因为每个请求都是连续处理的

为了衡量这一点,我有以下想法:我希望我的系统在一个小时内始终加载10个请求,并测量在这段时间内处理了多少请求。在

换句话说,当10个请求中的一个成功时,应该执行另一个请求来代替它。在

我怎么能用蝗虫做到这一点?

我想到了使用请求成功处理程序,如蝗虫文档中所述:

^{pr2}$

这可以让我知道一个请求何时成功,但那又怎样呢?我不确定是否有可能通知特定蝗虫它的请求成功。在


Tags: selftaskon过程系统defpasscontent