python-requests:限制重定向的次数

时间:2015-07-22 01:57:38

标签: python python-requests

有没有办法限制执行GET时python-requests将遵循的重定向数量?

I know about allow_redirects=False,但这只会阻止所有重定向。我正在寻找一种方法来跟踪重定向,最多可以达到最大跳数。

# What I know how to do:
resp = requests.get(url)  # follows redirects "infinitely"
resp = requests.get(url, allow_redirects=False)  # follows no redirects

# What I'm trying to do:
resp = requests.get(url, max_redirects=3)  # follow up to 3 redirects

谢谢!

2 个答案:

答案 0 :(得分:6)

您必须创建Session对象并将max_redirects变量设置为3

session = requests.Session()
session.max_redirects = 3
session.get(url)
如果请求超过最大重定向次数,则会引发

TooManyRedirects异常。

相关的github问题,讨论为什么你不能为每个请求设置max_redirects https://github.com/kennethreitz/requests/issues/1300

答案 1 :(得分:-2)

如果您想获取导致Max Rediect Limit Exception的请求的标题(或其他信息),您可以这样做:

session = requests.Session()
session.max_redirects = 1
try:
    r = session.post(url, headers=headers, params=querystring, data=payload)
except requests.exceptions.TooManyRedirects as exc:
    r = exc.response

确保您的请求是最新版本。