airbyte_cdk.sources.streams.http.exceptions

 1#
 2# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
 3#
 4
 5
 6from typing import Optional, Union
 7
 8import requests
 9
10from airbyte_cdk.models import FailureType
11
12
13class BaseBackoffException(requests.exceptions.HTTPError):
14    def __init__(
15        self,
16        request: requests.PreparedRequest,
17        response: Optional[Union[requests.Response, Exception]],
18        error_message: str = "",
19        failure_type: Optional[FailureType] = None,
20    ):
21        self.failure_type = failure_type
22        if isinstance(response, requests.Response):
23            error_message = (
24                error_message
25                or f"Request URL: {request.url}, Response Code: {response.status_code}, Response Text: {response.text}"
26            )
27            super().__init__(error_message, request=request, response=response)
28        else:
29            error_message = error_message or f"Request URL: {request.url}, Exception: {response}"
30            super().__init__(error_message, request=request, response=None)
31
32
33class RequestBodyException(Exception):
34    """
35    Raised when there are issues in configuring a request body
36    """
37
38
39class UserDefinedBackoffException(BaseBackoffException):
40    """
41    An exception that exposes how long it attempted to backoff
42    """
43
44    def __init__(
45        self,
46        backoff: Union[int, float],
47        request: requests.PreparedRequest,
48        response: Optional[Union[requests.Response, Exception]],
49        error_message: str = "",
50        failure_type: Optional[FailureType] = None,
51    ):
52        """
53        :param backoff: how long to backoff in seconds
54        :param request: the request that triggered this backoff exception
55        :param response: the response that triggered the backoff exception
56        """
57        self.backoff = backoff
58        super().__init__(
59            request=request,
60            response=response,
61            error_message=error_message,
62            failure_type=failure_type,
63        )
64
65
66class DefaultBackoffException(BaseBackoffException):
67    pass
68
69
70class RateLimitBackoffException(BaseBackoffException):
71    pass
class BaseBackoffException(requests.exceptions.HTTPError):
14class BaseBackoffException(requests.exceptions.HTTPError):
15    def __init__(
16        self,
17        request: requests.PreparedRequest,
18        response: Optional[Union[requests.Response, Exception]],
19        error_message: str = "",
20        failure_type: Optional[FailureType] = None,
21    ):
22        self.failure_type = failure_type
23        if isinstance(response, requests.Response):
24            error_message = (
25                error_message
26                or f"Request URL: {request.url}, Response Code: {response.status_code}, Response Text: {response.text}"
27            )
28            super().__init__(error_message, request=request, response=response)
29        else:
30            error_message = error_message or f"Request URL: {request.url}, Exception: {response}"
31            super().__init__(error_message, request=request, response=None)

An HTTP error occurred.

BaseBackoffException( request: requests.models.PreparedRequest, response: Union[requests.models.Response, Exception, NoneType], error_message: str = '', failure_type: Optional[airbyte_protocol_dataclasses.models.airbyte_protocol.FailureType] = None)
15    def __init__(
16        self,
17        request: requests.PreparedRequest,
18        response: Optional[Union[requests.Response, Exception]],
19        error_message: str = "",
20        failure_type: Optional[FailureType] = None,
21    ):
22        self.failure_type = failure_type
23        if isinstance(response, requests.Response):
24            error_message = (
25                error_message
26                or f"Request URL: {request.url}, Response Code: {response.status_code}, Response Text: {response.text}"
27            )
28            super().__init__(error_message, request=request, response=response)
29        else:
30            error_message = error_message or f"Request URL: {request.url}, Exception: {response}"
31            super().__init__(error_message, request=request, response=None)

Initialize RequestException with request and response objects.

failure_type
class RequestBodyException(builtins.Exception):
34class RequestBodyException(Exception):
35    """
36    Raised when there are issues in configuring a request body
37    """

Raised when there are issues in configuring a request body

class UserDefinedBackoffException(BaseBackoffException):
40class UserDefinedBackoffException(BaseBackoffException):
41    """
42    An exception that exposes how long it attempted to backoff
43    """
44
45    def __init__(
46        self,
47        backoff: Union[int, float],
48        request: requests.PreparedRequest,
49        response: Optional[Union[requests.Response, Exception]],
50        error_message: str = "",
51        failure_type: Optional[FailureType] = None,
52    ):
53        """
54        :param backoff: how long to backoff in seconds
55        :param request: the request that triggered this backoff exception
56        :param response: the response that triggered the backoff exception
57        """
58        self.backoff = backoff
59        super().__init__(
60            request=request,
61            response=response,
62            error_message=error_message,
63            failure_type=failure_type,
64        )

An exception that exposes how long it attempted to backoff

UserDefinedBackoffException( backoff: Union[int, float], request: requests.models.PreparedRequest, response: Union[requests.models.Response, Exception, NoneType], error_message: str = '', failure_type: Optional[airbyte_protocol_dataclasses.models.airbyte_protocol.FailureType] = None)
45    def __init__(
46        self,
47        backoff: Union[int, float],
48        request: requests.PreparedRequest,
49        response: Optional[Union[requests.Response, Exception]],
50        error_message: str = "",
51        failure_type: Optional[FailureType] = None,
52    ):
53        """
54        :param backoff: how long to backoff in seconds
55        :param request: the request that triggered this backoff exception
56        :param response: the response that triggered the backoff exception
57        """
58        self.backoff = backoff
59        super().__init__(
60            request=request,
61            response=response,
62            error_message=error_message,
63            failure_type=failure_type,
64        )
Parameters
  • backoff: how long to backoff in seconds
  • request: the request that triggered this backoff exception
  • response: the response that triggered the backoff exception
backoff
class DefaultBackoffException(BaseBackoffException):
67class DefaultBackoffException(BaseBackoffException):
68    pass

An HTTP error occurred.

class RateLimitBackoffException(BaseBackoffException):
71class RateLimitBackoffException(BaseBackoffException):
72    pass

An HTTP error occurred.