如何在rocast中为单个请求的响应时间编写事件钩子

2024-04-26 18:13:43 发布

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

我计划用rocast测试我的web服务器的性能, 下面代码的问题是它只给出了平均时间

我的基本代码如下

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)

Tags: csvnameselftimeresponserequestdefstats
1条回答
网友
1楼 · 发布于 2024-04-26 18:13:43

这是在测量实际的响应时间。在

这里需要注意的是,如果有效负载有多个URI,那么每个URI的响应时间都将被记录,这必须依次排序/在记录结果时删除重复项

相关问题 更多 >