gigl.common.utils.retry#
Attributes#
Exceptions#
Common base class for all non-exit exceptions. |
Functions#
|
Decorator that can be added around a function to retry incase it fails i.e. throws some exceptions |
Module Contents#
- exception gigl.common.utils.retry.RetriesFailedException[source]#
Bases:
Exception
Common base class for all non-exit exceptions.
Initialize self. See help(type(self)) for accurate signature.
- gigl.common.utils.retry.retry(exception_to_check=Exception, tries=5, delay_s=3, backoff=2, max_delay_s=None, fn_execution_timeout_s=None, deadline_s=None, should_throw_original_exception=False)[source]#
Decorator that can be added around a function to retry incase it fails i.e. throws some exceptions
- Parameters:
exception_to_check (Union[Type, Tuple[Type, ...]]) – the exception to check. Could also be a tuple of
everything (exceptions to check. Defaults to Exception. i.e. catches)
tries (Optional[int]) – [description]. number of times to try (not retry) before giving up. Defaults to 5.
delay_s (Optional[int]) – [description]. initial delay between retries in seconds. Defaults to 3.
backoff (Optional[int]) – [description]. backoff multiplier e.g. value of 2 will double the delay each retry. Defaults to 2.
max_delay_s (Optional[int]) – [description]. maximum delay between retries in seconds. Defaults to None.
fn_execution_timeout_s (Optional[int]) – Maximum time given before a single function execution should time out. Defaults to None.
deadline_s (Optional[int]) – [description]. Total time in seconds to spend retrying, fails if exceeds this time. Note this timeout can also stop the first execution, so ensure to provide a lot of extra room so retries can actually take place. If timeout occurs, src.common.utils.timeout.TimedOutException is raised. Defaults to None.
should_throw_original_exception (Optional[bool]) – Defaults to False.
- Return type:
Callable[[Callable[Ellipsis, T]], Callable[Ellipsis, T]]