python的retrying模块_python retrying 模块

本文介绍了Python的retrying库,它用于自动重试可能失败的函数。通过装饰器@retry,你可以设定最大尝试次数、重试间隔时间和重试策略。示例展示了不同参数如stop_max_attempt_number、stop_max_delay、wait_fixed等如何调整重试行为,帮助优化错误处理和提高程序稳定性。
摘要由CSDN通过智能技术生成

retrying是一个python的重试包,可以用来自动重试一些可能运行失败的程序段,retrying提供一个装饰器函数retry,被装饰的函数就会在运行失败的情况下重新执行,默认只要一直报错就会不断重试。

安装: pip install retrying

1. 简单实用

import random

from retrying import retry

@retry

def do_something_unreliable():

if random.randint(0, 10) > 1:

print("just have a test")

raise IOError("Broken sauce, everything is hosed!!!111one")

else:

return "Awesome sauce!"

print(do_something_unreliable())

运行该段代码, 你会发现每次随机打印 “just have a test” 这句话的次数不一致.

2. 参数

使用 retry, 默认的行为会一直重试, 没有时间等待.

from retrying import retry

@retry

def do_something():

print('Retry')

raise IOError("Retry")

do_something()

stop_max_attempt_number: 用来设定最大的尝试次数,超过该次数就会停止

from retrying import retry

@retry(stop_max_attempt_number=7)

def do_something():

print('Retry')

raise IOError("Retry")

do_something()

stop_max_delay: 从被装饰的函数开始执行的时间点开始到函数成功运行结束或失败报错中止的时间点。单位:毫秒

from retrying import retry

@retry(stop_max_delay=100)

def do_something():

print('Retry')

raise IOError("Retry")

do_something()

wait_fixed: 设置在两次retrying之间的停留时间

from retrying import retry

@retry(wait_fixed=1000)

def do_something():

print('Retry')

raise IOError("Retry")

do_something()

wait_random_min:两次retrying之间的停留最短时间

wait_random_max:两次retrying之间的停留最长时间

from retrying import retry

@retry(wait_random_min=100, wait_random_max=2000)

def do_something():

print('Retry')

raise IOError("Retry")

do_something()

wait_exponential_multiplier 和 wait_exponential_max: 以指数的形式产生两次retrying之间的停留时间, 产生的值为2^previous_attempt_number * wait_exponential_multiplier, previous_attempt_number是前面已经retry的次数, 如果产生的这个值超过了wait_exponential_max的大小, 那么之后两个retrying之间的停留值都为wait_exponential_max.

from retrying import retry

@retry(wait_exponential_multiplier=100, wait_exponential_max=10000)

def do_something():

print('Retry')

raise IOError("Retry")

do_something()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值