def post(self, method, data, retries=None, stream=False): ''' Performs POST request to server with given parameters. Raise error if can not connect to server. :param method: str :param data: dict :param retries: int (number of attempts to access the server) :param stream: bool :return: Request class object ''' if retries is None: retries = self.retry_count for retry_idx in range(retries): url = self.server_address + '/public/api/v3/' + method response = None try: if type(data) is bytes: response = requests.post(url, data=data, headers=self.headers, stream=stream) elif type(data) is MultipartEncoderMonitor or type( data) is MultipartEncoder: response = requests.post( url, data=data, headers={ **self.headers, 'Content-Type': data.content_type }, stream=stream) else: json_body = data if type(data) is dict: json_body = {**data, **self.additional_fields} response = requests.post(url, json=json_body, headers=self.headers, stream=stream) if response.status_code != requests.codes.ok: Api._raise_for_status(response) return response except requests.RequestException as exc: process_requests_exception(self.logger, exc, method, url, verbose=True, swallow_exc=True, sleep_sec=self.retry_sleep_sec, response=response, retry_info={ "retry_idx": retry_idx + 1, "retry_limit": retries }) except Exception as exc: process_unhandled_request(self.logger, exc) raise requests.exceptions.RetryError( "Retry limit exceeded ({!r})".format(url))
def get(self, method, params, retries=None, stream=False, use_public_api=True): ''' Performs GET request to server with given parameters. Raise error if can not connect to server. :param method: str :param params: dict :param retries: int (number of attempts to access the server) :param stream: bool :param use_public_api: bool :return: Request class object ''' if retries is None: retries = self.retry_count for retry_idx in range(retries): url = self.server_address + '/public/api/v3/' + method if use_public_api is False: url = os.path.join(self.server_address, method) response = None try: json_body = params if type(params) is dict: json_body = {**params, **self.additional_fields} response = requests.get(url, params=json_body, headers=self.headers, stream=stream) if response.status_code != requests.codes.ok: Api._raise_for_status(response) return response except requests.RequestException as exc: process_requests_exception(self.logger, exc, method, url, verbose=True, swallow_exc=True, sleep_sec=self.retry_sleep_sec, response=response, retry_info={ "retry_idx": retry_idx + 2, "retry_limit": retries }) except Exception as exc: process_unhandled_request(self.logger, exc)
def post(self, method, data, retries=None, stream=False): if retries is None: retries = self.retry_count for retry_idx in range(retries): url = self.server_address + '/public/api/v3/' + method response = None try: if type(data) is bytes: response = requests.post(url, data=data, headers=self.headers, stream=stream) elif type(data) is MultipartEncoderMonitor or type( data) is MultipartEncoder: response = requests.post( url, data=data, headers={ **self.headers, 'Content-Type': data.content_type }, stream=stream) else: json_body = data if type(data) is dict: json_body = {**data, **self.additional_fields} response = requests.post(url, json=json_body, headers=self.headers, stream=stream) if response.status_code != requests.codes.ok: Api._raise_for_status(response) return response except requests.RequestException as exc: process_requests_exception(self.logger, exc, method, url, verbose=True, swallow_exc=True, sleep_sec=self.retry_sleep_sec, response=response, retry_info={ "retry_idx": retry_idx + 2, "retry_limit": retries }) except Exception as exc: process_unhandled_request(self.logger, exc) Api._raise_for_status(response)
def _send_request(self, api_method_name, request_data, timeout, in_stream, addit_headers): url = os.path.join(self.server_address, api_method_name) if not addit_headers: addit_headers = {} cur_header = {**self.headers, **addit_headers} not_log_request = api_method_name != 'Log' server_reply = None try: server_reply = requests.post(url, headers=cur_header, data=request_data, stream=in_stream, timeout=timeout) server_reply.raise_for_status() except requests.RequestException as exc: process_requests_exception(self.logger, exc, api_method_name, url, verbose=not_log_request, swallow_exc=False, response=server_reply) except Exception as exc: process_unhandled_request(self.logger, exc) return server_reply
def get(self, method, params, retries=None, stream=False, use_public_api=True): if retries is None: retries = self.retry_count for retry_idx in range(retries): url = self.server_address + '/public/api/v3/' + method if use_public_api is False: url = os.path.join(self.server_address, method) response = None try: json_body = params if type(params) is dict: json_body = {**params, **self.additional_fields} response = requests.get(url, params=json_body, headers=self.headers, stream=stream) if response.status_code != requests.codes.ok: Api._raise_for_status(response) return response except requests.RequestException as exc: process_requests_exception(self.logger, exc, method, url, verbose=True, swallow_exc=True, sleep_sec=self.retry_sleep_sec, response=response, retry_info={ "retry_idx": retry_idx + 2, "retry_limit": retries }) except Exception as exc: process_unhandled_request(self.logger, exc)