在我执行负载测试时,我试图增加客户端的数量,以达到我开始收到HTTP错误429的"请求太多"的程度。
API 的统计信息似乎包括返回 429 时的响应时间。当 API 在没有任何 429 错误的情况下工作时,我收到的最短响应时间约为 100 毫秒。当 429 错误开始发生时,最小响应时间小于 10ms。这导致统计信息被 429 个错误的响应时间所扭曲,因为它们通常返回得相当快。
如果发生错误,我尝试使用response.close()
,但这会关闭连接并禁止达到请求的客户端数量。
我不知道如何删除 429 错误响应时间,因为响应时间已经被捕获。 有没有办法防止"太多请求"失败包含在统计信息中?
另一种选择是使用常规响应包,而不是 HTTPLocust 的版本,然后根据 API 的运行时间构建我自己的直方图。
如果在捕获响应块中抛出异常,则根本不会记录请求:https://docs.locust.io/en/stable/writing-a-locustfile.html#manually-controlling-if-a-request-should-be-considered-successful-or-a-failure
from locust.exception import RescheduleTask
...
with self.client.get("/does_not_exist/", catch_response=True) as response:
if response.status_code == 404:
raise RescheduleTask()