diff options
Diffstat (limited to 'redis/backoff.py')
-rw-r--r-- | redis/backoff.py | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/redis/backoff.py b/redis/backoff.py index 5ccdb91..c62e760 100644 --- a/redis/backoff.py +++ b/redis/backoff.py @@ -1,6 +1,11 @@ import random from abc import ABC, abstractmethod +# Maximum backoff between each retry in seconds +DEFAULT_CAP = 0.512 +# Minimum backoff between each retry in seconds +DEFAULT_BASE = 0.008 + class AbstractBackoff(ABC): """Backoff interface""" @@ -40,7 +45,7 @@ class NoBackoff(ConstantBackoff): class ExponentialBackoff(AbstractBackoff): """Exponential backoff upon failure""" - def __init__(self, cap, base): + def __init__(self, cap=DEFAULT_CAP, base=DEFAULT_BASE): """ `cap`: maximum backoff time in seconds `base`: base backoff time in seconds @@ -55,7 +60,7 @@ class ExponentialBackoff(AbstractBackoff): class FullJitterBackoff(AbstractBackoff): """Full jitter backoff upon failure""" - def __init__(self, cap, base): + def __init__(self, cap=DEFAULT_CAP, base=DEFAULT_BASE): """ `cap`: maximum backoff time in seconds `base`: base backoff time in seconds @@ -70,7 +75,7 @@ class FullJitterBackoff(AbstractBackoff): class EqualJitterBackoff(AbstractBackoff): """Equal jitter backoff upon failure""" - def __init__(self, cap, base): + def __init__(self, cap=DEFAULT_CAP, base=DEFAULT_BASE): """ `cap`: maximum backoff time in seconds `base`: base backoff time in seconds @@ -86,7 +91,7 @@ class EqualJitterBackoff(AbstractBackoff): class DecorrelatedJitterBackoff(AbstractBackoff): """Decorrelated jitter backoff upon failure""" - def __init__(self, cap, base): + def __init__(self, cap=DEFAULT_CAP, base=DEFAULT_BASE): """ `cap`: maximum backoff time in seconds `base`: base backoff time in seconds @@ -103,3 +108,7 @@ class DecorrelatedJitterBackoff(AbstractBackoff): temp = random.uniform(self._base, max_backoff) self._previous_backoff = min(self._cap, temp) return self._previous_backoff + + +def default_backoff(): + return EqualJitterBackoff() |