summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Holder <ray.holder+github@gmail.com>2014-11-09 21:13:02 -0600
committerRay Holder <ray.holder+github@gmail.com>2014-11-09 21:13:02 -0600
commit7a50d88ad1201f069f2aebf80d3b22b8ef749e43 (patch)
tree35ee23791764ce2fc586b46797bd4fdc37596ddd
parent6fa200573f667d8ff050b23a0076de42112d7e1b (diff)
parent01a217353220f48167575724a77fa7c4bd527bd4 (diff)
downloadretrying-7a50d88ad1201f069f2aebf80d3b22b8ef749e43.tar.gz
Merge pull request #23 from harlowja/jitter
Allow a jitter value to be passed in
-rw-r--r--retrying.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/retrying.py b/retrying.py
index 7a00a8d..37119d7 100644
--- a/retrying.py
+++ b/retrying.py
@@ -90,7 +90,8 @@ class Retrying(object):
retry_on_result=None,
wrap_exception=False,
stop_func=None,
- wait_func=None):
+ wait_func=None,
+ wait_jitter_max=None):
self._stop_max_attempt_number = 5 if stop_max_attempt_number is None else stop_max_attempt_number
self._stop_max_delay = 100 if stop_max_delay is None else stop_max_delay
@@ -101,6 +102,7 @@ class Retrying(object):
self._wait_incrementing_increment = 100 if wait_incrementing_increment is None else wait_incrementing_increment
self._wait_exponential_multiplier = 1 if wait_exponential_multiplier is None else wait_exponential_multiplier
self._wait_exponential_max = MAX_WAIT if wait_exponential_max is None else wait_exponential_max
+ self._wait_jitter_max = 0 if wait_jitter_max is None else wait_jitter_max
# TODO add chaining of stop behaviors
# stop behavior
@@ -235,6 +237,9 @@ class Retrying(object):
raise RetryError(attempt)
else:
sleep = self.wait(attempt_number, delay_since_first_attempt_ms)
+ if self._wait_jitter_max:
+ jitter = random.random() * self._wait_jitter_max
+ sleep = sleep + max(0, jitter)
time.sleep(sleep / 1000.0)
attempt_number += 1