python的重试库tenacity用法以及类似库retry、requests实现

介绍

tenacity is an Apache 2.0 licensed general-purpose retrying library, written in Python, to simplify the task of adding retry behavior to just about anything. It originates from a fork of retrying which is sadly no longer maintained. Tenacity isn’t api compatible with retrying but adds significant new functionality and fixes a number of longstanding bugs.

安装

pip install tenacity

 

文档:

https://tenacity.readthedocs.io/en/latest/

 

demo:
In [13]: import random
    ...: from tenacity import retry
    ...:
    ...: @retry
    ...: def do_something_unreliable():
    ...:     value = random.randint(0,10)
    ...:     if value > 1:
    ...:         raise IOError("Broken sauce, everything is hosed!!!111one")
    ...:     else:
    ...:         print(value)
    ...:         return "Awesome sauce!"
    ...:
    ...: print(do_something_unreliable())
1
Awesome sauce!

In [14]: import random
    ...: from tenacity import retry
    ...:
    ...: @retry
    ...: def do_something_unreliable():
    ...:     value = random.randint(0,10)
    ...:     if value > 1:
    ...:         raise IOError("Broken sauce, everything is hosed!!!111one")
    ...:     else:
    ...:         print(value)
    ...:         return "Awesome sauce!"
    ...:
    ...: print(do_something_unreliable())
1
Awesome sauce!

In [15]: import random
    ...: from tenacity import retry
    ...:
    ...: @retry
    ...: def do_something_unreliable():
    ...:     value = random.randint(0,10)
    ...:     if value > 1:
    ...:         raise IOError("Broken sauce, everything is hosed!!!111one")
    ...:     else:
    ...:         print(value)
    ...:         return "Awesome sauce!"
    ...:
    ...: print(do_something_unreliable())
0
Awesome sauce!

In [16]: import random
    ...: from tenacity import retry
    ...:
    ...: @retry
    ...: def do_something_unreliable():
    ...:     value = random.randint(0,10)
    ...:     if value > 1:
    ...:         raise IOError("Broken sauce, everything is hosed!!!111one")
    ...:     else:
    ...:         print(value)
    ...:         return "Awesome sauce!"
    ...:
    ...: print(do_something_unreliable())
1
Awesome sauce!

 

源代码:

https://github.com/jd/tenacity

类似库:retry

pip install retry

自己可以参考retry源代码自己实现

requests多次尝试实现:

https://www.cnblogs.com/eshizhan/p/5072626.html

转载于:https://www.cnblogs.com/shengulong/p/10373597.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值