projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' into 7492-keepproxy-upstream-errors
[arvados.git]
/
sdk
/
python
/
arvados
/
retry.py
diff --git
a/sdk/python/arvados/retry.py
b/sdk/python/arvados/retry.py
index 52a68faa6f6b511bf78378cc944aa6e4c5914c33..d8f5317d2c4c160c833339929302edaae679d6f5 100644
(file)
--- a/
sdk/python/arvados/retry.py
+++ b/
sdk/python/arvados/retry.py
@@
-2,6
+2,7
@@
import functools
import inspect
import functools
import inspect
+import pycurl
import time
from collections import deque
import time
from collections import deque
@@
-109,11
+110,11
@@
class RetryLoop(object):
"queried loop results before any were recorded")
"queried loop results before any were recorded")
-def check_http_response_success(
result
):
- """Convert a
'requests' respons
e to a loop control flag.
+def check_http_response_success(
status_code
):
+ """Convert a
n HTTP status cod
e to a loop control flag.
- Pass this method a
requests.Response object
. It returns True if
- the
respons
e indicates success, None if it indicates temporary
+ Pass this method a
numeric HTTP status code
. It returns True if
+ the
cod
e indicates success, None if it indicates temporary
failure, and False otherwise. You can use this as the
success_check for a RetryLoop.
failure, and False otherwise. You can use this as the
success_check for a RetryLoop.
@@
-128,15
+129,11
@@
def check_http_response_success(result):
3xx status codes. They don't indicate success, and you can't
retry those requests verbatim.
"""
3xx status codes. They don't indicate success, and you can't
retry those requests verbatim.
"""
- try:
- status = result.status_code
- except Exception:
- return None
- if status in _HTTP_SUCCESSES:
+ if status_code in _HTTP_SUCCESSES:
return True
return True
- elif status in _HTTP_CAN_RETRY:
+ elif status
_code
in _HTTP_CAN_RETRY:
return None
return None
- elif 100 <= status < 600:
+ elif 100 <= status
_code
< 600:
return False
else:
return None # Get well soon, server.
return False
else:
return None # Get well soon, server.
@@
-151,8
+148,7
@@
def retry_method(orig_func):
"""
@functools.wraps(orig_func)
def num_retries_setter(self, *args, **kwargs):
"""
@functools.wraps(orig_func)
def num_retries_setter(self, *args, **kwargs):
- arg_vals = inspect.getcallargs(orig_func, self, *args, **kwargs)
- if arg_vals['num_retries'] is None:
+ if kwargs.get('num_retries') is None:
kwargs['num_retries'] = self.num_retries
return orig_func(self, *args, **kwargs)
return num_retries_setter
kwargs['num_retries'] = self.num_retries
return orig_func(self, *args, **kwargs)
return num_retries_setter