栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

基于python实现有入参的重试机制装饰器

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于python实现有入参的重试机制装饰器

import logging
import wrapt
import sys
import time
def retry(
        retries=3, exceptions=Exception,
        delay=1, max_delay=60, backoff=2,
        logger=None, log_level=logging.ERROR,log_extra=None
):
    @wrapt.decorator
    def _wrapper(wrapped, instance, args, kwargs):
        _delay = delay
        _retries = sys.maxsize if retries == -1 else retries
        for tries in range(_retries+1):
            try:
                return wrapped(*args, **kwargs)
            except Exception as exc:
                if isinstance(exc, KeyboardInterrupt):
                    raise
                if logger:
                    logger.log(log_level, str(exc), exc_info=True, extra=log_extra)
                if tries >= _retries:
                    raise
                time.sleep(_delay)
                _delay = min(_delay * backoff, max_delay)
    return _wrapper

关于@wrapt.decorator的用法可参考:https://blog.csdn.net/dianyin7770/article/details/101936029/

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/276250.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号