首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python方法中的重试

python方法中的重试
EN

Stack Overflow用户
提问于 2019-05-06 14:47:30
回答 1查看 64关注 0票数 0

这是标准的语言中立的方法。

代码语言:javascript
复制
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方法来做到这一点吗?

EN

回答 1

Stack Overflow用户

发布于 2019-05-06 15:16:22

更简单的方法是不要更改类的状态,因为它只是为了函数调用而重试(当方法多次被调用时,当前的实现不能像预期的那样工作)。我更希望使用重试装饰器(在成功时使用带中断的as循环),用于:

代码语言:javascript
复制
...
@retry(n_times=2, catch=Exception)
def get (self, key):
    ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56007554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档