用于各种退避/重试策略的python函数和装饰器

backoff-utils的Python项目详细描述


python库用于退避/重试策略

BranchUnit Tests
latestBuild Status (Travis CI)Code Coverage Status (Codecov)Documentation Status (ReadTheDocs)
v. 1.0.0Build Status (Travis CI)Code Coverage Status (Codecov)Documentation Status (ReadTheDocs)
developBuild Status (Travis CI)Code Coverage Status (Codecov)Documentation Status (ReadTheDocs)

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

我们很高兴继续保持这个图书馆 听取用户的反馈-尤其是遇到问题时。

请在 project’s Github page

有关为退避实用程序库捐款的详细信息,请参阅:Contributor Guide

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Cassandra复制因子大于节点数   java J2EE JTA事务回滚不适用于OSE Glassfish 4.0(Build 89)   java spring安全预认证用户登录   org的java类文件。反应流。从RxJava编译示例时未找到Publisher?   java在使用dataFormat作为POJO通过Camel调用Web服务时无法设置SOAP标头   Javafx类的java静态实例   java如何防止一个部件在关闭时覆盖另一个部件的位置   sql server无法从我的java代码连接到数据库   java在JList(Swing)中显示带有的ArrayList   从Java中的CXF服务获取WSAddressing数据   使用资产文件夹进行java简单json解析(本地)   java LDAPException未绑定的无效凭据   JavaJSFspring部署到weblogic   JAVA中字符数组中的特定元素排列?   如果脚本位于不同的目录中,则ant不会使用exec标记运行Javashell脚本