用于各种退避/重试策略的python函数和装饰器
backoff-utils的Python项目详细描述
python库用于退避/重试策略
Branch | Unit Tests |
---|---|
latest | |
v. 1.0.0 | |
develop |
backoff utils是一个提供python函数和装饰器的python库 对python函数和方法应用各种退避/重试策略 电话。
该库具有一致的语法,易于使用,并已在 Python2.7、3.4、3.5和3.6。
有关已读文档的完整文档:http://backoff-utils.readthedocs.io/en/latest
Installation
要安装backoff实用程序,只需执行:
$ pip install backoff-utils
Importing
安装后,要将backoff实用程序导入到您的项目中,您可以使用:
#: Import the backoff() function.frombackoff_utilsimportbackoff#: Import the @apply_backoff() decorator.frombackoff_utilsimportapply_backoff#: Import backoff strategies.frombackoff_utilsimportstrategies
Dependencies
根据设计,backoff实用程序设计为依赖于最小的依赖关系。 它们在python标准库之外的唯一依赖项是:
validator-collection 它提供了强大的验证功能。
在python 2.7下安装时,这个库又有一个外部依赖项:
- regex是替换 python的(错误的)标准re模块。
Hello, World Example
frombackoff_utilsimportstrategies# Using a Function Callfrombackoff_utilsimportbackoffdefsome_function(arg1,arg2,kwarg1=None):# your code goes herepassresult=backoff(some_function,args=['value1','value2'],kwargs={'kwarg1':'value3'},max_tries=3,max_delay=3600,strategy=strategies.Exponential)# Using a Decoratorfrombackoff_utilsimportbackoff@apply_backoff(strategy=strategies.Exponential,max_tries=3,max_delay=3600)defsome_decorated_function(arg1,arg2,kwarg1=None):# your code goes herepassresult=some_decorated_function('value1','value2',kwarg1='value3')
Why Backoff-Utils?
Because now and again, stuff breaks.
通常,当对第三方系统进行外部api调用时 错了。互联网可能会出故障。我们调用的api可能超时。格雷姆林 可能会吃掉你的包。任何事情都可能出错,墨菲定律告诉我们 我们相信他们会的。
这就是为什么我们需要退避策略。基本上,这些都是技巧 我们可以用来在给定的延迟后重试函数调用-并继续重试 直到函数调用起作用,或者直到我们尝试了很多次 我们只是放弃并处理错误。
这个库是一个非常简单的实用程序,它提供了一个数字 易于使用的退避策略。它的核心api是公开:
- the ^{tt2}$ function, which lets you apply a given backoff strategy to any Python function call, and;
- the ^{tt3}$ decorator, which lets you decorate any function or method call so that a given backoff strategy is always applied when the decorated function/method is called.
Library Features
Supported Strategies
图书馆支持五种最常见的退避策略 横过:
- 指数型
- 斐波那契
- 固定
- 线性
- 多项式
此外,您还可以创建自己的自定义策略。
有关支持的退避策略的详细信息,请参阅:Strategies Explained
Additional Features
除了基本策略外,库还支持:
- 随机抖动
- 重试时的参数调整
- 选择性异常捕获
- 连锁退避策略
- 故障处理程序
- 成功处理程序
- 最大延迟后的截止时间
- 在Max尝试后关闭
- 缩放
- 最小延迟
有关支持的退避策略的详细信息,请参阅:Using the Library
Feedback, Support, and Contributing
我们很高兴继续保持这个图书馆 听取用户的反馈-尤其是遇到问题时。
有关为退避实用程序库捐款的详细信息,请参阅:Contributor Guide