如何在Python Requests中为会话传递重试策略?
解决requests中Session绑定重试Adapter的问题
你直接把adapter传入Session()构造函数的方式是错误的,requests.Session.__init__()不接受额外位置参数,正确做法是通过session.mount()方法将Adapter挂载到Session实例上。
完整正确代码示例
# 导入所需模块 import requests from requests.adapters import HTTPAdapter from urllib3.util.retry import Retry # 创建重试策略 retry_strategy = Retry( total=10, backoff_factor=5, status_forcelist=[429, 500, 501, 502, 503], allowed_methods=["GET"] ) # 生成带重试策略的Adapter adapter = HTTPAdapter(max_retries=retry_strategy) # 初始化Session实例 session = requests.Session() # 将Adapter挂载到Session,适配http/https协议 session.mount("http://", adapter) session.mount("https://", adapter) # 后续通过session发送请求会自动应用重试规则 response = session.get("https://example.com")
关键说明
mount()方法第一个参数是URL前缀,指定哪些请求会使用该Adapter,挂载http://和https://可覆盖绝大多数场景。- 挂载完成后,该Session发送的所有对应协议请求,都会严格遵循你定义的重试规则。
内容的提问来源于stack exchange,提问作者user20271091
相关产品推荐
相关产品推荐

