首页 > 解决方案 > 如何获取 Python Requests Library 每次重试尝试的日志?

问题描述

我正在使用以下代码在 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')

它工作得很好,但是这一切都在悄无声息地发生。我想要的是在重试尝试时得到通知,如果可能的话,为什么会发生重试。对于每次重试尝试,我都想要这样的东西。

print(Exception.__class__)
print('Retrying after' + x + 'seconds')

可能吗?

标签: pythonpython-requestsurllib3

解决方案


您可以编写自己的类来添加应该从重试继承的日志。

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>)

推荐阅读