Python Retry Decorator

python_retry.retry(max_retries: int = 3, backoff_factor: int = 1, retry_on: (<class 'Exception'>, ) = None, supress_exception: bool = False, retry_logger: logging.Logger = None)

Retry decorator

Parameters
  • max_retries – int. Defaults to 3.

  • backoff_factor – int. Defaults to 1.

  • retry_on – tuple. A tuple of exceptions.

When no argument is passed all exceptions are catched. Defaults to None. :param supress_exception: bool. Supress the last exception raised. Defaults to False. :param retry_logger: logger.warning(fmt, error, delay) will be called on failed attempts. Default: retry.logging_logger. if None, logging is disabled.

The sleep time is calculated as sleep_time = backoff_factor * (2 ** (n_retry - 1)).

Examples

>>> from python_retry import retry
>>> import pytest
>>> import logging
>>>
>>> LOGGER = logging.getLogger("foo")
>>>
>>> @retry()
... def div(num: int, den: int):
...     return num/den
>>>
>>> div(1, 0)
>>>
>>> @retry(
... retry_on=(ZeroDivisionError,),
...     max_retries=2,
...     backoff_factor=1,
...     supress_exception=True,
...     retry_logger=LOGGER
... )
... def div(num: int, den: int):
...     return num / den
>>>
>>> div(1, 0)