summaryrefslogtreecommitdiff
path: root/kazoo/retry.py
diff options
context:
space:
mode:
Diffstat (limited to 'kazoo/retry.py')
-rw-r--r--kazoo/retry.py62
1 files changed, 35 insertions, 27 deletions
diff --git a/kazoo/retry.py b/kazoo/retry.py
index 707b378..48b94e1 100644
--- a/kazoo/retry.py
+++ b/kazoo/retry.py
@@ -32,19 +32,23 @@ class InterruptedError(RetryFailedError):
class KazooRetry(object):
"""Helper for retrying a method in the face of retry-able
exceptions"""
- RETRY_EXCEPTIONS = (
- ConnectionLoss,
- OperationTimeoutError,
- ForceRetryError
- )
-
- EXPIRED_EXCEPTIONS = (
- SessionExpiredError,
- )
-
- def __init__(self, max_tries=1, delay=0.1, backoff=2, max_jitter=0.4,
- max_delay=60.0, ignore_expire=True, sleep_func=time.sleep,
- deadline=None, interrupt=None):
+
+ RETRY_EXCEPTIONS = (ConnectionLoss, OperationTimeoutError, ForceRetryError)
+
+ EXPIRED_EXCEPTIONS = (SessionExpiredError,)
+
+ def __init__(
+ self,
+ max_tries=1,
+ delay=0.1,
+ backoff=2,
+ max_jitter=0.4,
+ max_delay=60.0,
+ ignore_expire=True,
+ sleep_func=time.sleep,
+ deadline=None,
+ interrupt=None,
+ ):
"""Create a :class:`KazooRetry` instance for retrying function
calls.
@@ -92,14 +96,16 @@ class KazooRetry(object):
def copy(self):
"""Return a clone of this retry manager"""
- obj = KazooRetry(max_tries=self.max_tries,
- delay=self.delay,
- backoff=self.backoff,
- max_jitter=self.max_jitter,
- max_delay=self.max_delay,
- sleep_func=self.sleep_func,
- deadline=self.deadline,
- interrupt=self.interrupt)
+ obj = KazooRetry(
+ max_tries=self.max_tries,
+ delay=self.delay,
+ backoff=self.backoff,
+ max_jitter=self.max_jitter,
+ max_delay=self.max_delay,
+ sleep_func=self.sleep_func,
+ deadline=self.deadline,
+ interrupt=self.interrupt,
+ )
obj.retry_exceptions = self.retry_exceptions
return obj
@@ -131,12 +137,15 @@ class KazooRetry(object):
if self._attempts == self.max_tries:
raise RetryFailedError("Too many retry attempts")
self._attempts += 1
- jitter = random.uniform(1.0-self.max_jitter,
- 1.0+self.max_jitter)
+ jitter = random.uniform(
+ 1.0 - self.max_jitter, 1.0 + self.max_jitter
+ )
sleeptime = self._cur_delay * jitter
- if self._cur_stoptime is not None and \
- time.time() + sleeptime >= self._cur_stoptime:
+ if (
+ self._cur_stoptime is not None
+ and time.time() + sleeptime >= self._cur_stoptime
+ ):
raise RetryFailedError("Exceeded retry deadline")
if self.interrupt:
@@ -150,5 +159,4 @@ class KazooRetry(object):
raise InterruptedError()
else:
self.sleep_func(sleeptime)
- self._cur_delay = min(sleeptime * self.backoff,
- self.max_delay)
+ self._cur_delay = min(sleeptime * self.backoff, self.max_delay)