【问题标题】:How to avoid / prevent Max Redirects error with requests in Python?如何避免/防止 Python 中的请求出现 Max Redirects 错误?
【发布时间】:2013-05-31 19:02:46
【问题描述】:

试图避免在python-requests 中出现Number of Redirects Exceeds 30 错误。我可以做些什么来避免它,还是纯粹是服务器端的?我在尝试 GET facebook.com 时遇到此错误。

非常感谢!

【问题讨论】:

  • 这是一个服务器端问题,您继续被服务器重定向。你需要弄清楚为什么你经常被重定向。
  • 您可以使用try ... except: ... 语句捕获并处理此错误。
  • @MartijnPieters 您应该添加您的评论作为回复。奥列格,谢谢你的指点。我更感兴趣的是找出是否以错误的方式做某事。
  • @JuanCarlosCoto:完成,以及如何开始调试重定向循环的信息。

标签: python http web request python-requests


【解决方案1】:

服务器正在循环重定向你。你需要弄清楚为什么你经常被重定向。

您可以尝试通过 允许重定向(设置allow_redirects=False)来查看发生了什么,然后使用.resolve_redirects() API 解决它们:

>>> import requests
>>> url = 'http://httpbin.org/redirect/5'  # redirects 5 times
>>> session = requests.session()
>>> r = session.get(url, allow_redirects=False)
>>> r.headers.get('location')
'/redirect/4'
>>> for redirect in session.resolve_redirects(r, r.request):
...     print redirect.headers.get('location')
... 
/redirect/3
/redirect/2
/redirect/1
/get
None

redirect 对象是正确的响应;从这些中打印出您需要弄清楚为什么最终会进入重定向循环的原因;也许服务器在标题或正文中提供了线索。

【讨论】:

  • 哇,这比我预期的要好。非常感谢!我很快就会试试这个。谢谢!
  • httpbin.org/redirect/5 对调试很有帮助 - 感谢您参考!
猜你喜欢
  • 2014-05-12
  • 2020-07-13
  • 2017-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-21
相关资源
最近更新 更多