Locust限制重定向次数设置无效,寻求解决思路
Hey,我之前也碰到过Locust里重定向次数不好控制的问题,给你几个亲测有效的解决办法:
解决Locust限制请求重定向次数的方案
1. 手动控制重定向流程(最灵活)
Locust底层依赖requests库,你可以直接关闭自动重定向,自己手动处理跳转逻辑,精准控制次数:
from locust import HttpUser, task, between class RedirectTestUser(HttpUser): wait_time = between(1, 3) @task def limited_redirect_request(self): max_allowed_redirects = 2 # 你要限制的重定向次数 current_url = "你的目标测试URL" redirect_count = 0 while redirect_count < max_allowed_redirects: # 关闭自动重定向,获取跳转地址 response = self.client.get(current_url, allow_redirects=False) if response.status_code in [302, 303]: current_url = response.headers.get("Location") redirect_count += 1 else: # 没有更多重定向,跳出循环 break # 访问最终的目标地址(如果需要) final_response = self.client.get(current_url)
这种方式完全由你掌控跳转次数,不会出现自动跳完所有302/303的情况。
2. 全局设置Session的最大重定向次数
如果所有请求都需要统一限制重定向次数,可以给Locust的client替换自定义的Session,修改requests的默认重定向上限:
from locust import HttpUser, task, between import requests class GlobalLimitUser(HttpUser): wait_time = between(1, 3) def on_start(self): # 覆盖默认Session,设置最大重定向次数 self.client.session = requests.Session() self.client.session.max_redirects = 2 # 这里设置你需要的次数 @task def test_with_global_limit(self): try: response = self.client.get("你的目标测试URL") except requests.TooManyRedirects: # 处理超过重定向次数的异常 print("重定向次数超过限制")
这个方法适合全局统一配置,但要注意超过次数会抛出TooManyRedirects异常,记得添加异常处理逻辑。
3. 排查版本或配置干扰
有时候旧版本的Locust对requests参数的支持可能有问题,建议先升级到最新版本:
pip install --upgrade locust
另外,如果你的测试配置了代理、SSL验证等特殊设置,也可能影响重定向处理,可以先简化配置(比如关闭代理、设置verify=False)测试是否能正常生效。
内容的提问来源于stack exchange,提问作者davidg
相关产品推荐
相关产品推荐

