You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:15:08