Python 蝗虫似乎开火请求\u成功事件挂钩比我的实际请求高60倍
我正在用蝗虫做一些负载测试。值得一提的是,我还使用Graphite和Grafana对结果进行分析,但我可以在不加载或在代码中使用任何一个的情况下生成此问题 最简单的是,这个问题可以用以下非常简单的蝗虫文件复制:Python 蝗虫似乎开火请求\u成功事件挂钩比我的实际请求高60倍,python,performance-testing,locust,Python,Performance Testing,Locust,我正在用蝗虫做一些负载测试。值得一提的是,我还使用Graphite和Grafana对结果进行分析,但我可以在不加载或在代码中使用任何一个的情况下生成此问题 最简单的是,这个问题可以用以下非常简单的蝗虫文件复制: from locust import HttpLocust, TaskSet, task, between import locust.events class Tasks(TaskSet): @task def make_request(self):
from locust import HttpLocust, TaskSet, task, between
import locust.events
class Tasks(TaskSet):
@task
def make_request(self):
self.client.get('/')
print('doing thing')
class Locust(HttpLocust):
wait_time = between(1, 3)
task_set = Tasks
def __init__(self):
super(Locust, self).__init__()
locust.events.request_success += self.hook_request_success
def hook_request_success(self, request_type, name,
response_time, response_length):
# This is where I would make a call to send the request's metadata to Graphite
print("sending thing")
这样称呼:
locust -H <host> -t 10s -c 1000 -r 10 --no-web -f test.py
如您所见,规范是基本的。我有一个单任务计划,我想执行一个请求,将每个请求的结果发送给Graphite。然而,在我所有的跑步中,当我假设它们是一对一时,我得到的发送东西的实例比做事情的实例多近60倍!我已经确认该函数是使用相同的参数调用的,并且表示完全相同的请求,只是针对Hocust发出的每个实际请求调用了多次。我根本不想要这个,我只想发送一次请求
为什么会这样?有什么我做错了吗?每次生成/实例化蝗虫时,您都在添加事件侦听器 使hook_request_success成为一个全局函数,并从那里添加它,将其更改为如下内容:
locust.events.request_success += hook_request_success
这样,它将只添加一次,这是您想要的。完全有效!的确是网络天才。非常感谢你。