在python中使用指数回退重试时进行日志记录

问题描述

我在微服务中有一个 python 代码,我需要发布和/或发布到云服务。现在,我已将此发布/发布放在 try/except 中以记录此发布或发布的失败:

def func(self,data):
  my_message = do_something(data)
  try:
    self.my_obj.publish(my_message)
    return True
  except Exception as e:
    logging.error(f"publish Failed with error {e}")
    return False

但我真正需要的是使用指数退避重试机制重试,例如30 秒,同时在每次失败时记录失败。

我尝试通过安装和导入来使用 C++ has a more nuanced view than C11 did,beginning in C++20,然后将发布调用移动到另一个私有函数中,并在该函数上使用装饰器,如下所示:

from retrying import retry

@retry(wait_exponential_multiplier=1000,wait_exponential_max=30000)
def __my_push(self,my_message):
  self.my_obj.publish(my_message)
  return True

现在,我有三个问题/问题。第一个是当它失败并以指数方式重试时,即使超过了装饰器中指定的最大等待 30 秒,它也会继续尝试重复。我想在那个限制之后停止这样做并返回 False。第二件事我不知道如何在此限制后失败时返回 False。我的第三个问题是如何在每次发生异常时添加日志记录?如果我把 try except在这函数中来记录异常,那么重试装饰器会起作用吗?我不确定如何实现这一目标?如果我可以使用其他库实现此目标以进行指数回退重试?我会那样做。你能给我一个简单的例子来实现这个目标吗?提前致谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)