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

  • 相关阅读:
    EOF:getchar()函数返回的一个特殊值
    elementUI的el-select使用filterable无效
    element table单元格相关的样式
    关于前端权限的一点想法--续
    IE浏览器与PDF文件
    vue form表单数据无法修改
    computed数据变动,table加载不全
    vue插件开发(本地使用)
    element table
    对象删除(消耗时间验证)
  • 原文地址:https://www.cnblogs.com/shengulong/p/10373597.html
Copyright © 2011-2022 走看看