在python方法中重试
这是标准的语言中立方法在python方法中重试,python,Python,这是标准的语言中立方法 import logging logger = logging.getLogger(__file__) class SomeClass(object): max_retry = 2 def get(self, key): try: return self.__get_value(key) except Exception: logger.error("Exception
import logging
logger = logging.getLogger(__file__)
class SomeClass(object):
max_retry = 2
def get(self, key):
try:
return self.__get_value(key)
except Exception:
logger.error("Exception occured even after retrying...")
raise
def __get_value(self, key, retry_num=0):
try:
return self.connection().get(key)
except Exception:
logger.error("Exception occured")
if retry_num < self.max_retry:
retry_num += 1
logger.warning("Retrying!!! Retry count - %s", retry_num)
self.__get_value(key, retry_num)
else:
raise
导入日志
logger=logging.getLogger(_文件__)
类SomeClass(对象):
最大重试次数=2
def get(自身,密钥):
尝试:
返回self.\u获取值(键)
除例外情况外:
logger.error(“重试后仍发生异常…”)
提升
def u获取值(self、key、retry_num=0):
尝试:
返回self.connection().get(键)
除例外情况外:
logger.error(“发生异常”)
如果重试次数
有更好的pythonic方法吗?更干净的方法是不更改类的状态,因为它只是为了函数调用而重试(当方法被多次调用时,当前的实现不会像预期的那样工作)。我更喜欢使用重试修饰符(作为成功时带中断的循环)作为:
用简单循环替换递归将是一个良好的开端。
...
@retry(n_times=2, catch=Exception)
def get (self, key):
...