使用一组配置参数重试decorator。

retryz的Python项目详细描述


https://img.shields.io/travis/jealous/retryz.svghttps://img.shields.io/coveralls/jealous/retryz.svghttps://img.shields.io/pypi/v/retryz.svg

版本:0.1.9

简介

帮助在特定条件下重试函数的函数装饰器。

这个包包含retrydecorator和一组配置 此装饰器的参数。

在Python2.7和Python3.4上测试。

要快速入门,请查看本页的教程部分。 查看[test_retryz.py](test/test_retryz.py)以获取详细示例。

安装

pip install retryz

教程

  • 如果捕获到valueerror,请重试。
@retry(on_error=ValueError)defmy_func():...
  • 如果捕获到valueerrortypeerror,请重试。
@retry(on_error=lambdae:isinstance(e,(ValueError,TypeError)))defmy_func():...
  • 重试,直到捕获到typeerror为止。
@retry(on_error=lambdae:notisinstance(e,TypeError))defmy_func():...
  • 重试,直到捕获到typeerrorattributeerror为止。
@retry(on_error=lambdae:notisinstance(e,(TypeError,AttributeError)))defmy_func():...
  • on_error是回调时, 它将重试,直到on_error返回False。注意回拨 接受一个参数,该参数是修饰的 功能。
def_error_callback(self,ex):assert_that(ex,instance_of(TypeError))returnself.call_count!=4@retry(on_error=_error_callback)deferror_call_back(self):...
  • 如果返回某个值,请重试。
@retry(on_return=True)defmy_func(self):...
  • 如果列表中有返回值,请重试。
@retry(on_return=lambdax:xin(1,2,3,4,5))defmy_func(self):...
  • 重试,直到返回某个值。
@retry(on_return=lambdax:x!=4)defmy_func(self):...
  • 重试,直到返回任何值。
@retry(on_return=lambdax:xnotin[3,4])defmy_func(self):...
  • on_return是回调时, 它将重试,直到on_return返回False。注意回拨 接受一个参数,它是修饰函数的返回值。
def_return_callback(ret):return4+ret<7@retry(on_return=_return_callback)defmy_func(self):...
  • 重试直至超时(秒)
@retry(timeout=0.1)defmy_func():...
  • 重试最大X次。
@retry(limit=3)defmy_func():...# or you could specify a callback@retry(limit=lambda:4)defmy_func_x():...
  • 每次重试之间等待X秒。
@retry(wait=0.1,timeout=0.3)defmy_func():...
  • wait是回调时,它将等待 回调返回的秒数。 回调接受一个参数,即当前重试次数。
def_wait_callback(self,tried):return2**tried@retry(wait=_wait_callback,timeout=0.1)defmy_func():...
  • on_retry可用于指定回调。这次回拨 是一个没有参数的函数。它将在每个 重试。这是一个典型的用法。
defdo_login():# login if not...@retry(on_retry=do_login,limit=2)defrequests(resource_id):...
  • retry也可以在函数样式中调用。 注意,返回值是一个函数。如果你想打电话 它,您需要添加一个额外的()
deffoo():...retry(foo,limit=3,timeout=5)()

若要提交问题,请访问:

https://github.com/jealous/retryz

联系作者:

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

推荐PyPI第三方库


热门话题
java CXF和授权   java在网站中部署使用swing创建的表单   java为什么getHeaderField()返回一个字符串,其中getHeaderFields()返回HttpUrlConnection中的Map<String,List<String>>   java如何检测恶意数据包?   webview中的java网页为空   java SWT图像资源,用于将我的所有图像存储在一个位置   java计算数组的最大长度,使平均值小于给定值   java“发件人电话号码无效”和美国号码   将Swing组件作为内容的自定义Java工具提示不会显示   在并发HashMap中重新灰化期间的java检索   Java 7和Tomcat 7.0.64 ClassFormatException:常量池中的字节标记无效   使用JUnit的java assertNull因NullPointerException失败   java内存中的文件是否与文件系统中的文件大小相同?   循环内实例化的类型的java注入依赖项