使用一组配置参数重试decorator。
retryz的Python项目详细描述
版本: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():...
- 如果捕获到valueerror或typeerror,请重试。
@retry(on_error=lambdae:isinstance(e,(ValueError,TypeError)))defmy_func():...
- 重试,直到捕获到typeerror为止。
@retry(on_error=lambdae:notisinstance(e,TypeError))defmy_func():...
- 重试,直到捕获到typeerror或attributeerror为止。
@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
联系作者:
- 塞德里克•庄<;jealous@163.com>;