如何获取Python请求库每次重试尝试的日志?

Has*_*bir 8 python urllib3 python-requests

我使用以下代码在 python 请求中实现重试机制。

from requests import Session
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry

s = Session()
retries = Retry(total=5,
                raise_on_redirect=True, 
                raise_on_status=True,
                backoff_factor=1,
                status_forcelist=[ 500, 502, 503, 504 ])
s.mount('http://', HTTPAdapter(max_retries=retries))
s.mount('https://', HTTPAdapter(max_retries=retries))
response=s.get('https://example.com')
Run Code Online (Sandbox Code Playgroud)

它工作得很好,然而这一切都悄无声息地发生。我想要的是每当进行重试尝试时都得到通知,如果可能的话,为什么会发生重试。我希望每次重试都有这样的事情。

print(Exception.__class__)
print('Retrying after' + x + 'seconds')
Run Code Online (Sandbox Code Playgroud)

是否可以?

ram*_*esh 13

你可以编写自己的类来添加日志,它应该继承自Retry。

class LogRetry(Retry):
  """
     Adding extra logs before making a retry request     
  """      
  def __init__(self, *args, **kwargs):
    logger.info(f'<add your logs here>')
    super().__init__(*args, **kwargs)

retries = LogRetry(<your args>)
Run Code Online (Sandbox Code Playgroud)

  • 这不只是记录创建了重试对象吗?它实际上并不记录重试。 (2认同)