in s3transfer/__init__.py [0:0]
def _get_object(self, bucket, key, filename, extra_args, callback):
# precondition: num_download_attempts > 0
max_attempts = self._config.num_download_attempts
last_exception = None
for i in range(max_attempts):
try:
return self._do_get_object(
bucket, key, filename, extra_args, callback
)
except (
socket.timeout,
OSError,
ReadTimeoutError,
IncompleteReadError,
) as e:
# TODO: we need a way to reset the callback if the
# download failed.
logger.debug(
"Retrying exception caught (%s), "
"retrying request, (attempt %s / %s)",
e,
i,
max_attempts,
exc_info=True,
)
last_exception = e
continue
raise RetriesExceededError(last_exception)