Example #1
0
def make_api_request(http,
                     http_request,
                     retries=7,
                     redirections=_REDIRECTIONS):
    """Send an HTTP request via the given http, performing error/retry handling.

    :type http: :class:`httplib2.Http`
    :param http: an instance which implements the `Http` API.

    :type http_request: :class:`Request`
    :param http_request: the request to send.

    :type retries: integer
    :param retries: Number of retries to attempt on retryable
                    responses (such as 429 or 5XX).

    :type redirections: integer
    :param redirections: Number of redirects to follow.

    :rtype: :class:`Response`
    :returns: an object representing the server's response.

    :raises: :exc:`google.cloud.streaming.exceptions.RequestError` if no
             response could be parsed.
    """
    retry = 0
    while True:
        try:
            return _make_api_request_no_retry(http,
                                              http_request,
                                              redirections=redirections)
        except _RETRYABLE_EXCEPTIONS as exc:
            retry += 1
            if retry >= retries:
                raise
            retry_after = getattr(exc, 'retry_after', None)
            if retry_after is None:
                retry_after = calculate_wait_for_retry(retry)

            _reset_http_connections(http)
            logging.debug('Retrying request to url %s after exception %s',
                          http_request.url,
                          type(exc).__name__)
            time.sleep(retry_after)
Example #2
0
def make_api_request(http, http_request, retries=7,
                     redirections=_REDIRECTIONS):
    """Send an HTTP request via the given http, performing error/retry handling.

    :type http: :class:`httplib2.Http`
    :param http: an instance which implements the `Http` API.

    :type http_request: :class:`Request`
    :param http_request: the request to send.

    :type retries: integer
    :param retries: Number of retries to attempt on retryable
                    responses (such as 429 or 5XX).

    :type redirections: integer
    :param redirections: Number of redirects to follow.

    :rtype: :class:`Response`
    :returns: an object representing the server's response.

    :raises: :exc:`google.cloud.streaming.exceptions.RequestError` if no
             response could be parsed.
    """
    retry = 0
    while True:
        try:
            return _make_api_request_no_retry(http, http_request,
                                              redirections=redirections)
        except _RETRYABLE_EXCEPTIONS as exc:
            retry += 1
            if retry >= retries:
                raise
            retry_after = getattr(exc, 'retry_after', None)
            if retry_after is None:
                retry_after = calculate_wait_for_retry(retry)

            _reset_http_connections(http)
            logging.debug('Retrying request to url %s after exception %s',
                          http_request.url, type(exc).__name__)
            time.sleep(retry_after)
Example #3
0
 def _call_fut(self, *args, **kw):
     from google.cloud.streaming.util import calculate_wait_for_retry
     return calculate_wait_for_retry(*args, **kw)
    def _call_fut(self, *args, **kw):
        from google.cloud.streaming.util import calculate_wait_for_retry

        return calculate_wait_for_retry(*args, **kw)