Skip to main content
https://img.shields.io/travis/jealous/retryz.svg https://img.shields.io/coveralls/jealous/retryz.svg https://img.shields.io/pypi/v/retryz.svg

VERSION: 0.1.9

Introduction

Function decorator that helps to retry the function under certain criteria.

This package contains the retry decorator and a bunch of configuration parameters for this decorator.

Tested on python 2.7 and python 3.4.

For quick start, check the tutorial section of this page. Check [test_retryz.py](test/test_retryz.py) for detail examples.

Installation

pip install retryz

License

Apache License version 2

Tutorial

  • Retry if ValueError is caught.

@retry(on_error=ValueError)
def my_func():
    ...
  • Retry if ValueError or TypeError is caught.

@retry(on_error=lambda e: isinstance(e, (ValueError, TypeError)))
def my_func():
    ...
  • Retry until TypeError is caught.

@retry(on_error=lambda e: not isinstance(e, TypeError))
def my_func():
    ...
  • Retry until TypeError or AttributeError is caught.

@retry(on_error=lambda e: not isinstance(e, (TypeError, AttributeError)))
def my_func():
    ...
  • When on_error is a callback, it will retry until on_error returns False. Note that callback takes one parameter which is the error instance raised by the decorated function.

def _error_callback(self, ex):
    assert_that(ex, instance_of(TypeError))
    return self.call_count != 4

@retry(on_error=_error_callback)
def error_call_back(self):
    ...
  • Retry if returns certain value.

@retry(on_return=True)
def my_func(self):
    ...
  • Retry if return value in the list.

@retry(on_return=lambda x: x in (1, 2, 3, 4, 5))
def my_func(self):
    ...
  • Retry until certain value is returned.

@retry(on_return=lambda x: x != 4)
def my_func(self):
    ...
  • Retry until any of the value is returned.

@retry(on_return=lambda x: x not in [3, 4])
def my_func(self):
    ...
  • When on_return is a callback, it will retry until on_return returns False. Note that callback takes one parameter which is the return value of the decorated function.

def _return_callback(ret):
    return 4 + ret < 7

@retry(on_return=_return_callback)
def my_func(self):
    ...
  • Retry until timeout (in seconds)

@retry(timeout=0.1)
def my_func():
    ...
  • Retry maximum X times.

@retry(limit=3)
def my_func():
    ...

# or you could specify a callback
@retry(limit=lambda: 4)
def my_func_x():
    ...
  • Wait X seconds between each retry.

@retry(wait=0.1, timeout=0.3)
def my_func():
    ...
  • When wait is a callback, it will wait for the amount of seconds returned by the callback. The callback takes one parameter which is the current count of retry.

def _wait_callback(self, tried):
    return 2 ** tried

@retry(wait=_wait_callback, timeout=0.1)
def my_func():
    ...
  • on_retry could be used to specify a callback. This callback is a function with no parameter. It will be invoked before each retry. Here is a typical usage.

def do_login():
    # login if not
    ...

@retry(on_retry=do_login, limit=2)
def requests(resource_id):
    ...
  • retry could also be called in a functional style. Note that the return value is a function. If you want to call it, you need to add an extra ().

def foo():
    ...

retry(foo, limit=3, timeout=5)()

To file issue, please visit:

https://github.com/jealous/retryz

Contact author:

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

retryz-0.1.9.tar.gz (10.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

retryz-0.1.9-py2.py3-none-any.whl (10.1 kB view details)

Uploaded Python 2Python 3

File details

Details for the file retryz-0.1.9.tar.gz.

File metadata

  • Download URL: retryz-0.1.9.tar.gz
  • Upload date:
  • Size: 10.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for retryz-0.1.9.tar.gz
Algorithm Hash digest
SHA256 d8a138009ca66032e6bd39e1bc0a5d8f3bc0f272763c8646ad73d1b6faf37915
MD5 31b3dcbf34bd5ad6a6709044242c0e3e
BLAKE2b-256 392b9acb4ee95954db400cfa056d2d7f06860f12902c33db9f3bc149f1d657b1

See more details on using hashes here.

File details

Details for the file retryz-0.1.9-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for retryz-0.1.9-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 8f4598c7fe02492789b05ecf59074908775bb0e3ce6486c17edc6b5710e1f19c
MD5 57e5ffe484c24d9ee9794b2e21a12914
BLAKE2b-256 cfebf52955956596f857ff64cc4c689b5d4c77bc2aaec7f86f5ff5d87d013826

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.9 This release

2 files

0.1.8

1 file

0.1.7

2 files

0.1.6

2 files

0.1.5

1 file

0.1.4

1 file

0.1.3

1 file

0.1.2

1 file

0.1.1

1 file

0.1.0

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page