获取三方token优化

This commit is contained in:
caoqianming 2022-11-17 17:50:17 +08:00
parent e24c632593
commit e84f012e09
2 changed files with 54 additions and 50 deletions

View File

@ -36,7 +36,7 @@ class DhClient:
self.headers = {"Connection": "close"} self.headers = {"Connection": "close"}
self.isGetingToken = False self.isGetingToken = False
self.log = {} self.log = {}
self._get_token() # self._get_token()
def _get_token(self): def _get_token(self):
self.isGetingToken = True self.isGetingToken = True
@ -45,7 +45,7 @@ class DhClient:
'client_id': self.client_id, 'client_id': self.client_id,
'client_secret': self.client_secret 'client_secret': self.client_secret
} }
is_ok, res = self.request(**dhapis['token_login'], params=params, raise_exception=False) is_ok, res = self.request(**dhapis['token_login'], params=params, raise_exception=False, timeout=2)
if is_ok == 'success': if is_ok == 'success':
cache.set('dh_token', res['access_token'], timeout=None) cache.set('dh_token', res['access_token'], timeout=None)
self.isGetingToken = False self.isGetingToken = False
@ -64,29 +64,31 @@ class DhClient:
if params: if params:
url = url.format(**params) url = url.format(**params)
self.log.update({"path": url}) self.log.update({"path": url})
r = getattr(requests, method)('{}{}'.format(settings.DAHUA_BASE_URL, url), try:
headers=self.headers, params=params, json=json, r = getattr(requests, method)('{}{}'.format(settings.DAHUA_BASE_URL, url),
timeout=timeout, files=files, verify=False) headers=self.headers, params=params, json=json,
# if settings.DEBUG: timeout=timeout, files=files, verify=False)
# print_roundtrip(r) # if settings.DEBUG:
ret = r.text # print_roundtrip(r)
if 300 > r.status_code >= 200: ret = r.text
ret = r.json() if 300 > r.status_code >= 200:
if ret['code'] not in ['0', '100', '00000', '1000', 0, 100, 1000]: ret = r.json()
detail = '大华错误:' + \ if ret['code'] not in ['0', '100', '00000', '1000', 0, 100, 1000]:
'{}|{}{}{}'.format(str(ret['code']), ret.get('errMsg', ''), detail = '大华错误:' + \
ret.get('desc', ''), str(ret.get('data', ''))) '{}|{}{}{}'.format(str(ret['code']), ret.get('errMsg', ''),
err_detail = dict(detail=detail, code='dh_'+str(ret['code'])) ret.get('desc', ''), str(ret.get('data', '')))
self.handle_log(result='fail', response=ret) err_detail = dict(detail=detail, code='dh_'+str(ret['code']))
if raise_exception: self.handle_log(result='fail', response=ret)
raise ParseError(**err_detail) if raise_exception:
return 'fail', err_detail raise ParseError(**err_detail)
# self.handle_log(result='success', response=ret) # 成功的日志就不记录了 return 'fail', err_detail
return 'success', ret['data'] if 'data' in ret else None # self.handle_log(result='success', response=ret) # 成功的日志就不记录了
self.handle_log(result='error', response=ret) return 'success', ret['data'] if 'data' in ret else None
if raise_exception: except Exception:
raise APIException(**DH_REQUEST_ERROR) self.handle_log(result='error', response=None)
return 'error', DH_REQUEST_ERROR if raise_exception:
raise APIException(**DH_REQUEST_ERROR)
return 'error', DH_REQUEST_ERROR
def _get_response_ms(self): def _get_response_ms(self):
""" """

View File

@ -31,14 +31,14 @@ class XxClient:
self.isGetingToken = False self.isGetingToken = False
self.headers = {"Connection": "close"} self.headers = {"Connection": "close"}
self.log = {} self.log = {}
self._get_token() # self._get_token()
def _get_token(self): def _get_token(self):
self.isGetingToken = True self.isGetingToken = True
json = { json = {
'licence': self.licence 'licence': self.licence
} }
is_ok, res = self.request(**xxapis['token_login'], json=json, raise_exception=False) is_ok, res = self.request(**xxapis['token_login'], json=json, raise_exception=False, timeout=2)
if is_ok == 'success': if is_ok == 'success':
cache.set('xx_token', res['token'], timeout=None) cache.set('xx_token', res['token'], timeout=None)
self.isGetingToken = False self.isGetingToken = False
@ -52,29 +52,31 @@ class XxClient:
json['licence'] = settings.XX_LICENCE json['licence'] = settings.XX_LICENCE
self.log = {"requested_at": now(), "id": uuid.uuid4(), "path": url, "method": method, self.log = {"requested_at": now(), "id": uuid.uuid4(), "path": url, "method": method,
"params": params, "body": json, "target": "xunxi", "result": 10, "headers": self.headers} "params": params, "body": json, "target": "xunxi", "result": 10, "headers": self.headers}
r = getattr(requests, method)('{}{}'.format(settings.XX_BASE_URL, url), try:
headers=self.headers, params=params, json=json, timeout=timeout, verify=False) r = getattr(requests, method)('{}{}'.format(settings.XX_BASE_URL, url),
# if settings.DEBUG: headers=self.headers, params=params, json=json, timeout=timeout, verify=False)
# print_roundtrip(r) # if settings.DEBUG:
ret = r.text # print_roundtrip(r)
if 300 > r.status_code >= 200: ret = r.text
ret = r.json() if 300 > r.status_code >= 200:
if ret['errorCode'] != 0: ret = r.json()
# if ret.get('errorCode') in ['1060000', 1060000]: if ret['errorCode'] != 0:
# self._get_token() # 重新获取token # if ret.get('errorCode') in ['1060000', 1060000]:
# self.request(url, method, params, json, timeout, raise_exception) # 重新请求 # self._get_token() # 重新获取token
# return # self.request(url, method, params, json, timeout, raise_exception) # 重新请求
err_detail = dict(detail='寻息错误:' + '|'.join(ret['errorMsg']), # return
code='xx_' + str(ret['errorCode'])) err_detail = dict(detail='寻息错误:' + '|'.join(ret['errorMsg']),
self.handle_log(result='fail', response=ret) code='xx_' + str(ret['errorCode']))
if raise_exception: self.handle_log(result='fail', response=ret)
raise ParseError(**err_detail) if raise_exception:
return 'fail', err_detail raise ParseError(**err_detail)
return 'success', ret['data'] return 'fail', err_detail
self.handle_log(result='error', response=ret) return 'success', ret['data']
if raise_exception: except Exception:
raise APIException(**XX_REQUEST_ERROR) self.handle_log(result='error', response=None)
return 'error', XX_REQUEST_ERROR if raise_exception:
raise APIException(**XX_REQUEST_ERROR)
return 'error', XX_REQUEST_ERROR
def _get_response_ms(self): def _get_response_ms(self):
""" """