diff --git a/opensearchpy/connection/http_requests.py b/opensearchpy/connection/http_requests.py index 9bf83004..5eb7bc70 100644 --- a/opensearchpy/connection/http_requests.py +++ b/opensearchpy/connection/http_requests.py @@ -88,6 +88,7 @@ def __init__( pool_maxsize: Any = None, **kwargs: Any ) -> None: + self.kwargs=kwargs if not REQUESTS_AVAILABLE: raise ImproperlyConfigured( "Please install requests to use RequestsHttpConnection." @@ -166,6 +167,10 @@ def perform_request( # type: ignore ignore: Collection[int] = (), headers: Optional[Mapping[str, str]] = None, ) -> Any: + + calculate_service_time=False + if "calculate_service_time" in self.kwargs: + calculate_service_time=self.kwargs["calculate_service_time"] url = self.base_url + url headers = headers or {} if params: @@ -176,7 +181,6 @@ def perform_request( # type: ignore body = self._gzip_compress(body) headers["content-encoding"] = "gzip" # type: ignore - start = time.time() request = requests.Request(method=method, headers=headers, url=url, data=body) prepared_request = self.session.prepare_request(request) settings = self.session.merge_environment_settings( @@ -187,6 +191,7 @@ def perform_request( # type: ignore "allow_redirects": allow_redirects, } send_kwargs.update(settings) + start = time.time() try: response = self.session.send(prepared_request, **send_kwargs) duration = time.time() - start @@ -194,6 +199,7 @@ def perform_request( # type: ignore except reraise_exceptions: raise except Exception as e: + duration = time.time() - start self.log_request_fail( method, url, @@ -207,7 +213,11 @@ def perform_request( # type: ignore if isinstance(e, requests.Timeout): raise ConnectionTimeout("TIMEOUT", str(e), e) raise ConnectionError("N/A", str(e), e) - + + # Add the service time to the raw_data + if calculate_service_time: + raw_data = raw_data.rstrip()[:-1] + f', "__client": {{"Service_Time": "{duration}"}}' + '}' + # raise warnings if any from the 'Warnings' header. warnings_headers = ( (response.headers["warning"],) if "warning" in response.headers else ()