美文网首页
python2自定义异常retry模块(装饰器版)

python2自定义异常retry模块(装饰器版)

作者: Elvis_zhou | 来源:发表于2019-05-10 11:07 被阅读0次

现在要求做一个重试逻辑,由于考虑到要做成docker镜像,减少依赖,于是自己写了一个异常重试的逻辑,代码如下:

import time
import logging
# logger模块
logger = logging.getLogger('fastone.cwl-runner')
logger.setLevel(level=logging.INFO)
formatter = logging.Formatter('%(asctime)s %(filename)s:%(lineno)d %(levelname)s %(message)s')
handler = logging.StreamHandler()
handler.setFormatter(formatter)
handler.setLevel(level=logging.INFO)
logger.addHandler(handler)


# 自定义异常
class RetryTimeoutError(Exception):
    pass

# 装饰器模块,需要传入参数(重试次数)
def retry(retry_times):
    def decorator(func):
        def wrapper(*args, **kwargs):
            retry_time = 0
            while retry_time < retry_times:
                try:
                    return func(*args, **kwargs)
                except Exception as e:
                    retry_time += 1
                    time.sleep(3)
                    # 这里的exc_info=1 可以把Traceback打印到log里
                    logger.warning('ERROR: api_create has error: %s', e, exc_info=1)
            else:
                raise TypeError
        return wrapper
    return decorator


@retry(attempt=3)
def a():
    a = 1
    print(a)
    raise RetryTimeoutError('重试超时')


if __name__ == '__main__':
    a()

运行结构如下:


相关文章

  • python2自定义异常retry模块(装饰器版)

    现在要求做一个重试逻辑,由于考虑到要做成docker镜像,减少依赖,于是自己写了一个异常重试的逻辑,代码如下: 运...

  • Flask之自定义错误处理的方法

      通过errorhandler装饰器,自定义异常处理

  • @retry装饰器

    安装:pip install retrying导包:from retrying import retryretry...

  • python装饰器参考

    装饰器的两种实现方式 示例一,retry comments: __retry_internal 调用前先固定住f的...

  • 目录

    Python自定义装饰器

  • python——异常处理

    异常处理 异常传递 抛出自定义异常 异常处理中抛出异常 模块 也可以使用这个导入所有的东西 name:是系统自定义...

  • PythonRecipe--Python装饰器"retry"

    本文来自于ActiveCode的文章Retry decorator in Python. 本文属于专题Python...

  • day10-异常处理和pygame显示

    一、异常处理 1.模块 导入模块(自定义模块,第三方模块)import 模块 ---->模块.内容from 模块 ...

  • GRPC

    Retries 问题 java 自动生成的 client 默认不会开启retry 模块. 需要主动设置 retry...

  • day10 pygame

    一、异常处理1.模块导入模块(自定义模块,第三方模块)import 模块 ---->模块.内容from 模块 im...

网友评论

      本文标题:python2自定义异常retry模块(装饰器版)

      本文链接:https://www.haomeiwen.com/subject/jfugoqtx.html