美文网首页
@retry装饰器

@retry装饰器

作者: 天雨流芳hodo | 来源:发表于2019-08-21 10:00 被阅读0次

安装:pip install retrying
导包:from retrying import retry
retrying是一个 Python的重试包,可以用来自动重试一些可能运行失败的程序段。retrying提供一个装饰器函数retry,被装饰的函数就会在运行失败的条件下重新执行

@retry(wait_fixed=3000,stop_max_attempt_number=10)
def query(i):
    url = "http://www.xxxxxxxxx"

    body ={
        "cartnum":x,
        "actiondo":"xxx"
    }
    result = requests.post(url=url,data=body)
    if result.status_code == 200:
        text = result.text
        data2 = json.loads(text)  # json形式的str转换为dict
        if data2["liuliangleft"] != "":
            left = int(data2["liuliangleft"])
            if left <= 0:
                print("注意该卡%s剩余流量为0" % i)
            return left
        else:
            raise Exception("查询失败",i)
    else:
        raise Exception

常用参数:

stop_max_attempt_number:在停止之前尝试的最大次数,最后一次如果还是有异常则会抛出异常,停止运行,默认为5次

stop_max_delay:比如设置成10000,那么从被装饰的函数开始执行的时间点开始,到函数成功运行结束或者失败报错中止的时间点,只要这段时间超过10秒,函数就不会再执行了

wait_fixed:设置在两次retrying之间的固定停留时间,默认为1000毫秒

wait_random_min:在两次调用方法停留时长,停留最短时间,默认为0毫秒
wait_random_max:在两次调用方法停留时长,停留最长时间,默认为1000毫秒

@retry(wait_random_min=1000, wait_random_max=2000)
def wait_random_1_to_2_s():
    print "Randomly wait 1 to 2 seconds between retries"

retry_on_result:指定一个函数,如果指定的函数返回True,则重试,否则抛出异常退出

def retry_if_result_none(result):
    return result is None

@retry(retry_on_result=retry_if_result_none)
def get_result():
    return None

retry_on_exception: 指定一个函数,如果此函数返回指定异常,则会重试,如果不是指定的异常则会退出

def retry_if_io_error(exception):
    return isinstance(exception, IOError)

@retry(retry_on_exception=retry_if_io_error)
def read_a_file():
    with open("file", "r") as f:
        return f.read()

参考:https://github.com/rholder/retrying

相关文章

  • @retry装饰器

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

  • python装饰器参考

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

  • PythonRecipe--Python装饰器"retry"

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

  • 装饰器

    """@装饰器- 普通装饰器- 带参数的装饰器- 通用装饰器- 装饰器装饰类- 内置装饰器- 缓存装饰器- 类实现...

  • typescript 五种装饰器

    装饰器类型 装饰器的类型有:类装饰器、访问器装饰器、属性装饰器、方法装饰器、参数装饰器,但是没有函数装饰器(fun...

  • python——装饰器详解

    一、装饰器概念 1、装饰器 装饰器:一种返回值也是一个函数的函数,即装饰器。 2、装饰器目的 装饰器的目的:装饰器...

  • 重试

    Spring Retry Guava Retry

  • Python装饰器

    Python装饰器 一、函数装饰器 1.无参装饰器 示例:日志记录装饰器 2.带参装饰器 示例: 二、类装饰器 示例:

  • Python中的装饰器

    Python中的装饰器 不带参数的装饰器 带参数的装饰器 类装饰器 functools.wraps 使用装饰器极大...

  • 装饰器

    装饰器 decorator类装饰器 带参数的装饰器 举例(装饰器函数;装饰器类;有参与无参) https://fo...

网友评论

      本文标题:@retry装饰器

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