以下内容来自请求高级用法:
请求附带单个传输适配器HTTPAdapter。这个 adapter提供与HTTP和HTTPS的默认请求交互 使用功能强大的urllib3库。无论何时请求会话 初始化,其中一个附加到HTTP的Session对象, 和一个用于HTTPS。
挂载调用将传输适配器的特定实例注册到 一个前缀。安装后,使用该会话进行的任何HTTP请求 以给定前缀开头的URL将使用给定的传输适配器。
由于
答案 0 :(得分:2)
session.mount方法用于在属性session.adapters中设置前缀的字典索引。默认会话will mount 2 adapters。您可以基于HTTPAdapter实现一个新类,以实现您所要求的行为。由于重试逻辑是在send()方法中处理的,因此可以调用基类send方法,捕获RetyError异常并单独处理它们。
import requests
class CustomAdapter(requests.adapters.HTTPAdapter):
# custom __init__?
def send(self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None):
try:
requests.adapters.HTTPAdapter.send(self, request, stream, timeout, verify, cert, proxies)
except requests.exceptions.RetryError:
# do your thing
def load_custom(session):
session.adapters['http://'] = CustomAdapter()
查看Exception handling code in requests以及requests_mock实现的示例