如何在蝗虫中编写事件挂钩以获取单个请求的响应时间

时间:2017-08-02 17:30:45

标签: python event-handling locust

我计划使用蝗虫测试我的网络服务器的性能, 以下代码的问题在于它只给出了平均时间

我的基本代码如下

from locust import HttpLocust, TaskSet, task, events, web
def index(l):
        l.client.get("/")

def stats(l):
        l.client.get("/stats/requests")

class MyTaskSet(TaskSet):
       tasks = [index,stats]

class MyLocust(HttpLocust):
    host = "http://127.0.0.1:8089"
    min_wait = 2000
    max_wait = 5000
    task_set = MyTaskSet
    request_success_stats = [list()]
    request_fail_stats = [list()]

    def __init__(self):
        super(MyLocust, self).__init__()
        locust.events.request_success += self.hook_request_success
        locust.events.request_failure += self.hook_request_fail
        locust.events.quitting += self.hook_locust_quit

    def hook_request_success(self, request_type, name, response_time, response_length):
            self.request_success_stats.append([name, request_type, response_time, response_length])

    def hook_request_fail(self, request_type, name, response_time, exception):
        self.request_fail_stats.append([name, request_type, response_time, exception])

    def hook_locust_quit(self):
        self.save_success_stats()

    def save_success_stats(self):
        import csv
        with open('success_req_stats.csv', 'wb') as csv_file:
            writer = csv.writer(csv_file)
                for value in self.request_success_stats:
                    writer.writerow(value)

1 个答案:

答案 0 :(得分:1)

这是测量实际响应时间。

这里的问题是,如果有效载荷有多个URI,那么将记录每个URI的响应时间,在记录结果时必须对其进行排序/删除重复