X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/44d97727200a7efecd115cd01fb520f371ebfe3b..da453701654115387e6b11189c6a830f24abf715:/sdk/python/arvados/retry.py diff --git a/sdk/python/arvados/retry.py b/sdk/python/arvados/retry.py index 3d2fc48e31..d8f5317d2c 100644 --- a/sdk/python/arvados/retry.py +++ b/sdk/python/arvados/retry.py @@ -2,6 +2,7 @@ import functools import inspect +import pycurl import time from collections import deque @@ -109,12 +110,12 @@ class RetryLoop(object): "queried loop results before any were recorded") -def check_http_response_success(result): - """Convert an httplib2 request result to a loop control flag. +def check_http_response_success(status_code): + """Convert an HTTP status code to a loop control flag. - Pass this method the 2-tuple returned by httplib2.Http.request. It - returns True if the response indicates success, None if it indicates - temporary failure, and False otherwise. You can use this as the + Pass this method a numeric HTTP status code. It returns True if + the code indicates success, None if it indicates temporary + failure, and False otherwise. You can use this as the success_check for a RetryLoop. Implementation details: @@ -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. """ - try: - status = int(result[0].status) - except Exception: - return None - if status in _HTTP_SUCCESSES: + if status_code in _HTTP_SUCCESSES: return True - elif status in _HTTP_CAN_RETRY: + elif status_code in _HTTP_CAN_RETRY: return None - elif 100 <= status < 600: + elif 100 <= status_code < 600: 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): - 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