def _request(self,
                 method,
                 uri,
                 path_params=None,
                 flatten_params=True,
                 **kwargs):
        if path_params:
            # Ensure path param is encoded.
            path_params = {
                key: quote(str(value), safe=u'')
                for key, value in path_params.items()
            }
            uri %= path_params

        # Custom nested object flattening
        if flatten_params and 'params' in kwargs:
            kwargs['params'] = self._flatten_param(kwargs['params'])

        full_uri = self._endpoint + uri

        response = self._session.request(method, full_uri, **kwargs)
        log_message = format_request(response)

        logging.info(log_message)
        if not 200 <= response.status_code <= 299:
            logging.error(log_message)

        return response
Beispiel #2
0
        def wrapper(*args, **kwargs):
            total_retries = int(TenableIOClient._TOTAL_RETRIES)
            count = 0
            sleep_ms = 0
            if 'headers' not in kwargs or not kwargs['headers']:
                kwargs['headers'] = {}

            while count <= total_retries:
                # Set retry count header
                if count > 0:
                    kwargs['headers'].update(
                        {u'X-Tio-Retry-Count': str(count)})
                count += 1

                try:
                    return f(*args, **kwargs)
                except TenableIORetryableApiException as exception:
                    if count > total_retries:
                        raise TenableIOApiException(exception.response)
                    sleep_ms += count * int(
                        TenableIOClient._RETRY_SLEEP_MILLISECONDS)
                    sleep(sleep_ms / 1000.0)
                    logging.warn(u'RETRY(%d/%d)AFTER(%dms):%s' %
                                 (count, total_retries, sleep_ms,
                                  format_request(exception.response)))
    def _request(self, method, uri, path_params=None, **kwargs):
        if path_params:
            # Ensure path param is encoded.
            path_params = {key: quote(str(value), safe=u'') for key, value in path_params.items()}
            uri %= path_params

        full_uri = self._endpoint + uri

        response = requests.request(method, full_uri, headers=self._headers, **kwargs)
        log_message = format_request(response)

        logging.info(log_message)
        if not 200 <= response.status_code <= 299:
            logging.error(log_message)

        return response
        def wrapper(*args, **kwargs):
            count = 0
            retry = True
            sleep_ms = 0

            while retry:
                retry = False
                try:
                    return f(*args, **kwargs)
                except TenableIORetryableApiException as exception:
                    count += 1

                    if count <= TenableIOClient.MAX_RETRIES:
                        retry = True
                        sleep_ms += count * TenableIOClient.RETRY_SLEEP_MILLISECONDS
                        logging.warn(u'RETRY(%d/%d)AFTER(%dms):%s' %
                                     (count, TenableIOClient.MAX_RETRIES, sleep_ms, format_request(exception.response)))
                        sleep(sleep_ms / 1000.0)
                    else:
                        raise TenableIOApiException(exception.response)