zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    GIT学习笔记(2):时光机穿梭与远程仓库
    CNN学习笔记:正则化缓解过拟合
    Java分布式:RPC(远程过程调用)
    设计模式:学习笔记(12)——代理模式
    算法:乐观锁与悲观锁
    Python:笔记(5)——错误、调试和测试
    算法:LRU(最近最少使用)
    Python:笔记(4)——高级特性
    方法论:带着问题找答案
    Cache-Aside模式
  • 原文地址:https://www.cnblogs.com/shengulong/p/10373597.html
Copyright © 2011-2022 走看看