diff --git a/google/api_core/retry.py b/google/api_core/retry.py index 43e4f079..f0f23bc8 100644 --- a/google/api_core/retry.py +++ b/google/api_core/retry.py @@ -62,11 +62,13 @@ def check_if_exists(): import random import time +import requests.exceptions import six from google.api_core import datetime_helpers from google.api_core import exceptions from google.api_core import general_helpers +from google.auth import exceptions as auth_exceptions _LOGGER = logging.getLogger(__name__) _DEFAULT_INITIAL_DELAY = 1.0 # seconds @@ -101,6 +103,8 @@ def if_exception_type_predicate(exception): exceptions.InternalServerError, exceptions.TooManyRequests, exceptions.ServiceUnavailable, + requests.exceptions.ConnectionError, + auth_exceptions.TransportError, ) """A predicate that checks if an exception is a transient API error. diff --git a/tests/unit/test_retry.py b/tests/unit/test_retry.py index 4c2e457a..ce8f417d 100644 --- a/tests/unit/test_retry.py +++ b/tests/unit/test_retry.py @@ -18,9 +18,11 @@ import mock import pytest +import requests.exceptions from google.api_core import exceptions from google.api_core import retry +from google.auth import exceptions as auth_exceptions def test_if_exception_type(): @@ -42,6 +44,8 @@ def test_if_transient_error(): assert retry.if_transient_error(exceptions.InternalServerError("")) assert retry.if_transient_error(exceptions.TooManyRequests("")) assert retry.if_transient_error(exceptions.ServiceUnavailable("")) + assert retry.if_transient_error(requests.exceptions.ConnectionError("")) + assert retry.if_transient_error(auth_exceptions.TransportError("")) assert not retry.if_transient_error(exceptions.InvalidArgument(""))