summaryrefslogtreecommitdiff
path: root/retrying.py
diff options
context:
space:
mode:
authorRay Holder <ray.holder+github@gmail.com>2016-06-06 22:45:05 -0500
committerRay Holder <ray.holder+github@gmail.com>2016-06-06 22:45:05 -0500
commit3a435e8ba85d85d7300a3609cb6f3ba8cb4bc170 (patch)
tree811a959b401614d56722fbeb35f1b02b978ecebf /retrying.py
parent855db168d38493a1607066b127a6c93d4920371a (diff)
parent919d6e0011f2c725e0bf613d8b5fcf7e48b41cce (diff)
downloadretrying-3a435e8ba85d85d7300a3609cb6f3ba8cb4bc170.tar.gz
Merge pull request #37 from harlowja/allow-retry-on-exception-exception-tuple
Allow providing exception tuple for 'retry_on_exception' argument
Diffstat (limited to 'retrying.py')
-rw-r--r--retrying.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/retrying.py b/retrying.py
index 594bf71..bcb7a9d 100644
--- a/retrying.py
+++ b/retrying.py
@@ -23,6 +23,12 @@ import traceback
MAX_WAIT = 1073741823
+def _retry_if_exception_of_type(retryable_types):
+ def _retry_if_exception_these_types(exception):
+ return isinstance(exception, retryable_types)
+ return _retry_if_exception_these_types
+
+
def retry(*dargs, **dkw):
"""
Decorator function that instantiates the Retrying object
@@ -133,9 +139,14 @@ class Retrying(object):
if retry_on_exception is None:
self._retry_on_exception = self.always_reject
else:
+ # this allows for providing a tuple of exception types that
+ # should be allowed to retry on, and avoids having to create
+ # a callback that does the same thing
+ if isinstance(retry_on_exception, (tuple)):
+ retry_on_exception = _retry_if_exception_of_type(
+ retry_on_exception)
self._retry_on_exception = retry_on_exception
- # TODO simplify retrying by Exception types
# retry on result filter
if retry_on_result is None:
self._retry_on_result = self.never_reject