summaryrefslogtreecommitdiff
path: root/redis/backoff.py
diff options
context:
space:
mode:
Diffstat (limited to 'redis/backoff.py')
-rw-r--r--redis/backoff.py17
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()