@@ -210,6 +210,7 @@ def __init__(
210
210
request_timeout = constants .DEFAULT_REQUEST_TIMEOUT , # type: Union[float, Tuple[float, float]]
211
211
handle_retry = exceptions .RetryWithExponentialBackoff (),
212
212
service_account_file = None ,
213
+ json_lib = None ,
213
214
):
214
215
# type: (...) -> None
215
216
self ._client_session = ClientSession (
@@ -258,6 +259,7 @@ def __init__(
258
259
self ._handle_retry = handle_retry
259
260
self .max_attempts = max_attempts
260
261
self ._http_scheme = http_scheme
262
+ self .json_lib = json_lib
261
263
262
264
@property
263
265
def transaction_id (self ):
@@ -355,6 +357,8 @@ def post(self, sql):
355
357
while http_response is not None and http_response .is_redirect :
356
358
location = http_response .headers ["Location" ]
357
359
url = self ._redirect_handler .handle (location )
360
+ log_level = logger .getEffectiveLevel ()
361
+ if log_level <= logging .logging .INFO :
358
362
logger .info (
359
363
"redirect {} from {} to {}" .format (
360
364
http_response .status_code , location , url
@@ -406,9 +410,14 @@ def process(self, http_response):
406
410
if not http_response .ok :
407
411
self .raise_response_error (http_response )
408
412
413
+ log_level = logger .getEffectiveLevel ()
409
414
http_response .encoding = "utf-8"
410
- response = http_response .json ()
411
- logger .debug ("HTTP {}: {}" .format (http_response .status_code , response ))
415
+ if self .json_lib :
416
+ response = self .json_lib .loads (http_response .content )
417
+ else :
418
+ response = http_response .json ()
419
+ if log_level <= logging .logging .DEBUG :
420
+ logger .debug ("HTTP {}: {}" .format (http_response .status_code , response ))
412
421
if "error" in response :
413
422
raise self ._process_error (response ["error" ], response .get ("id" ))
414
423
@@ -474,11 +483,13 @@ def __iter__(self):
474
483
self ._rows = None
475
484
476
485
# Subsequent fetches from GET requests until next_uri is empty.
486
+ log_level = logger .getEffectiveLevel ()
477
487
while not self ._query .is_finished ():
478
488
rows = self ._query .fetch ()
479
489
for row in rows :
480
490
self ._rownumber += 1
481
- logger .debug ("row {}" .format (row ))
491
+ if log_level <= logging .logging .DEBUG :
492
+ logger .debug ("row {}" .format (row ))
482
493
yield row
483
494
484
495
@@ -554,7 +565,9 @@ def fetch(self):
554
565
if status .columns :
555
566
self ._columns = status .columns
556
567
self ._stats .update (status .stats )
557
- logger .debug (status )
568
+ log_level = logger .getEffectiveLevel ()
569
+ if log_level <= logging .logging .DEBUG :
570
+ logger .debug (status )
558
571
if status .next_uri is None :
559
572
self ._finished = True
560
573
return status .rows
@@ -565,13 +578,17 @@ def cancel(self):
565
578
if self .query_id is None or self .is_finished ():
566
579
return
567
580
581
+ log_level = logger .getEffectiveLevel ()
568
582
self ._cancelled = True
569
583
url = self ._request .get_url ("/v1/query/{}" .format (self .query_id ))
570
- logger .debug ("cancelling query: %s" , self .query_id )
584
+ if log_level <= logging .logging .DEBUG :
585
+ logger .debug ("cancelling query: %s" , self .query_id )
571
586
response = self ._request .delete (url )
572
- logger .info (response )
587
+ if log_level <= logging .logging .INFO :
588
+ logger .info (response )
573
589
if response .status_code == requests .codes .no_content :
574
- logger .debug ("query cancelled: %s" , self .query_id )
590
+ if log_level <= logging .logging .DEBUG :
591
+ logger .debug ("query cancelled: %s" , self .query_id )
575
592
return
576
593
self ._request .raise_response_error (response )
577
594
0 commit comments