• 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

  • 相关阅读:
    视频直播技术-视频-编码-传输-秒开等<转>
    弹出框JBox实例
    Dijkstra in python
    oracle 修改索引现有表空间
    WIN7 如何关闭Aero
    不再打酱油
    Android 开机默认横竖屏
    cocos2d-x 3.0 开发(一) Hello_New_World
    PHOTOSHOP 中画笔工具和铅笔工具的一个小小差别
    一种从JSON数据创建Java类的高效办法
  • 原文地址:https://www.cnblogs.com/shengulong/p/10373597.html
Copyright © 2020-2023  润新知