Skip to content

Commit 4e38bac

Browse files
committed
Additional logs
1 parent 2b517be commit 4e38bac

4 files changed

Lines changed: 34 additions & 2 deletions

File tree

pinecone/core/client/api_client.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
import json
1313
import atexit
14+
import logging
1415
import mimetypes
1516
from multiprocessing.pool import ThreadPool
1617
import io
@@ -38,6 +39,7 @@
3839
none_type,
3940
validate_and_convert_types,
4041
)
42+
from pinecone.stopwatch import track
4143

4244

4345
class ApiClient(object):
@@ -181,6 +183,7 @@ def __call_api(
181183
url = _host + resource_path
182184

183185
try:
186+
logging.debug(f"api_client.__call_api calling self.request: {track('query'):.3f}")
184187
# perform request and return response
185188
response_data = self.request(
186189
method,
@@ -195,6 +198,7 @@ def __call_api(
195198
except ApiException as e:
196199
e.body = e.body.decode("utf-8")
197200
raise e
201+
logging.debug(f"api_client.__call_api finished the request: {track('query'):.3f}")
198202

199203
self.last_response = response_data
200204

@@ -204,6 +208,7 @@ def __call_api(
204208
return return_data
205209
return return_data
206210

211+
logging.debug(f"api_client.__call_api starting deserialization: {track('query'):.3f}")
207212
# deserialize response data
208213
if response_type:
209214
if response_type != (file_type,):
@@ -218,6 +223,7 @@ def __call_api(
218223
return_data = self.deserialize(response_data, response_type, _check_type)
219224
else:
220225
return_data = None
226+
logging.debug(f"api_client.__call_api finished deserialization: {track('query'):.3f}")
221227

222228
if _return_http_data_only:
223229
return return_data

pinecone/core/client/rest.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
ServiceException,
2727
ApiValueError,
2828
)
29-
29+
from pinecone.stopwatch import track
3030

3131
logger = logging.getLogger(__name__)
3232

@@ -112,6 +112,7 @@ def request(
112112
_preload_content=True,
113113
_request_timeout=None,
114114
):
115+
logging.debug(f"Starting rest[{method}] request: {track('query'):.3f}")
115116
"""Perform requests.
116117
117118
:param method: http request method
@@ -211,9 +212,11 @@ def request(
211212
raise ApiException(status=0, reason=msg)
212213
# For `GET`, `HEAD`
213214
else:
215+
logging.debug(f"Calling pool_manager for [{method}] request: {track('query'):.3f}")
214216
r = self.pool_manager.request(
215217
method, url, fields=query_params, preload_content=_preload_content, timeout=timeout, headers=headers
216218
)
219+
logging.debug(f"pool_manager returned a response for [{method}] request: {track('query'):.3f}")
217220
except urllib3.exceptions.SSLError as e:
218221
msg = "{0}\n{1}".format(type(e).__name__, str(e))
219222
raise ApiException(status=0, reason=msg)
@@ -223,6 +226,7 @@ def request(
223226

224227
# log response body
225228
logger.debug("response body: %s", r.data)
229+
logging.debug(f"Response body for [{method}] request: {track('query'):.3f}")
226230

227231
if not 200 <= r.status <= 299:
228232
if r.status == 401:

pinecone/index.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import logging
2+
13
from tqdm.autonotebook import tqdm
24
from importlib.util import find_spec
35
import numbers
@@ -54,6 +56,7 @@
5456

5557
from .core.utils.constants import REQUIRED_VECTOR_FIELDS, OPTIONAL_VECTOR_FIELDS
5658
from .core.utils.error_handling import validate_and_convert_errors
59+
from .stopwatch import track, reset
5760

5861
_OPENAPI_ENDPOINT_PARAMS = (
5962
"_return_http_data_only",
@@ -455,6 +458,7 @@ def query(
455458
Returns: QueryResponse object which contains the list of the closest vectors as ScoredVector objects,
456459
and namespace name.
457460
"""
461+
logging.debug(f"Started executing a Pinecone query: {track('query'):.3f}")
458462

459463
def _query_transform(item):
460464
if isinstance(item, QueryVector):
@@ -494,7 +498,11 @@ def _query_transform(item):
494498
),
495499
**{k: v for k, v in kwargs.items() if k in _OPENAPI_ENDPOINT_PARAMS},
496500
)
497-
return parse_query_response(response, vector is not None or id)
501+
logging.debug(f"Vector API returned a response: {track('query'):.3f}")
502+
parsed_response = parse_query_response(response, vector is not None or id)
503+
logging.debug(f"Parsed query response: {track('query'):.3f}")
504+
reset("query")
505+
return parsed_response
498506

499507
@validate_and_convert_errors
500508
def update(

pinecone/stopwatch.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import time
2+
3+
stopwatches = {}
4+
5+
6+
def track(name: str) -> float:
7+
if name not in stopwatches:
8+
stopwatches[name] = time.time_ns()
9+
return 0.
10+
return (time.time_ns() - stopwatches[name]) / 10**9
11+
12+
13+
def reset(name: str):
14+
del stopwatches[name]

0 commit comments

Comments
 (0)