这是标准的语言中立方法
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
有没有更好的 pythonic 方式?
答案 0 :(得分:1)
更清洁的方法是不更改类的状态,因为它仅针对函数调用重试(多次调用该方法时,当前实现无法按预期工作)。我更喜欢使用重试装饰器(成功时为带有中断的循环)作为
...
@retry(n_times=2, catch=Exception)
def get (self, key):
...