Skip to content

Commit f10f81e

Browse files
authored
* fix: log * Update abstract_client.py
1 parent 44b6bd8 commit f10f81e

File tree

2 files changed

+35
-4
lines changed

2 files changed

+35
-4
lines changed

tencentcloud/common/abstract_client.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
import tencentcloud
3535
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
3636
from tencentcloud.common.exception import TencentCloudSDKException as SDKError
37-
from tencentcloud.common.http.request import ApiRequest
37+
from tencentcloud.common.http.request import ApiRequest, ResponsePrettyFormatter
3838
from tencentcloud.common.http.request import RequestInternal
3939
from tencentcloud.common.profile.client_profile import ClientProfile, RegionBreakerProfile
4040
from tencentcloud.common.sign import Sign
@@ -324,6 +324,7 @@ def _get_multipart_body(self, params, boundary, options=None):
324324

325325
def _check_status(self, resp_inter):
326326
if resp_inter.status_code != 200:
327+
logger.debug("GetResponse: %s", ResponsePrettyFormatter(resp_inter))
327328
raise TencentCloudSDKException("ServerNetworkError", resp_inter.content)
328329

329330
def _format_sign_string(self, params):
@@ -354,6 +355,7 @@ def _check_error(self, resp):
354355
code = data["Response"]["Error"]["Code"]
355356
message = data["Response"]["Error"]["Message"]
356357
reqid = data["Response"]["RequestId"]
358+
logger.debug("GetResponse: %s", ResponsePrettyFormatter(resp))
357359
raise TencentCloudSDKException(code, message, reqid)
358360
if "DeprecatedWarning" in data["Response"]:
359361
import warnings
@@ -363,6 +365,7 @@ def _check_error(self, resp):
363365

364366
@staticmethod
365367
def _process_response_sse(resp):
368+
logger.debug("GetResponse: %s", ResponsePrettyFormatter(resp, format_body=False))
366369
e = {}
367370

368371
for line in resp.iter_lines():
@@ -371,6 +374,7 @@ def _process_response_sse(resp):
371374
e = {}
372375
continue
373376

377+
logger.debug("GetResponse: %s", line)
374378
line = line.decode('utf-8')
375379

376380
# comment
@@ -409,6 +413,7 @@ def call(self, action, params, options=None, headers=None):
409413
resp = self._call(action, params, options, headers)
410414
self._check_status(resp)
411415
self._check_error(resp)
416+
logger.debug("GetResponse: %s", ResponsePrettyFormatter(resp))
412417
return resp.content
413418

414419
def _call_with_region_breaker(self, action, params, options=None, headers=None):
@@ -488,6 +493,7 @@ def call_json(self, action, params, headers=None, options=None):
488493
resp = self._call(action, params, options, headers)
489494
self._check_status(resp)
490495
self._check_error(resp)
496+
logger.debug("GetResponse: %s", ResponsePrettyFormatter(resp))
491497
return json.loads(resp.content)
492498

493499
def call_sse(self, action, params, headers=None, options=None):

tencentcloud/common/http/request.py

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,7 @@ def _request(self, req_inter):
8989
url = self._handle_host(req_inter.host)
9090
if self.keep_alive:
9191
req_inter.header["Connection"] = "Keep-Alive"
92-
if self.debug:
93-
logger.debug("SendRequest %s" % req_inter)
92+
logger.debug("SendRequest: %s" % req_inter)
9493
if req_inter.method == 'GET':
9594
req_inter_url = '%s?%s' % (url, req_inter.data)
9695
return self.conn.request(req_inter.method, req_inter_url,
@@ -106,7 +105,6 @@ def send_request(self, req_inter):
106105
try:
107106
http_resp = self._request(req_inter)
108107
self.request_size = self.conn.request_length
109-
logger.debug("GetResponse %s" % http_resp)
110108
return http_resp
111109
except Exception as e:
112110
raise TencentCloudSDKException("ClientNetworkError", str(e))
@@ -126,3 +124,30 @@ def __str__(self):
126124
headers = "\n".join("%s: %s" % (k, v) for k, v in self.header.items())
127125
return ("Host: %s\nMethod: %s\nUri: %s\nHeader: %s\nData: %s\n"
128126
% (self.host, self.method, self.uri, headers, self.data))
127+
128+
129+
class ResponsePrettyFormatter(object):
130+
def __init__(self, resp, format_body=True, delimiter="\n"):
131+
self._resp = resp
132+
self._format_body = format_body
133+
self._delimiter = delimiter
134+
135+
def __str__(self):
136+
lines = ['%s %d %s' % (self.str_ver(self._resp.raw.version), self._resp.status_code, self._resp.reason)]
137+
for k, v in self._resp.headers.items():
138+
lines.append('%s: %s' % (k, v))
139+
if self._format_body:
140+
lines.append('')
141+
lines.append(self._resp.text)
142+
return self._delimiter.join(lines)
143+
144+
@staticmethod
145+
def str_ver(ver):
146+
if ver == 10:
147+
return "HTTP/1.0"
148+
elif ver == 11:
149+
return "HTTP/1.1"
150+
elif ver == 20:
151+
return "HTTP/2.0"
152+
else:
153+
return str(ver)

0 commit comments

Comments
 (0)