用celery更新token
This commit is contained in:
parent
aabb7aefea
commit
ba4a02b67b
|
@ -32,13 +32,11 @@ class DhClient:
|
||||||
self.client_secret = client_secret
|
self.client_secret = client_secret
|
||||||
self.headers = {"Connection": "close"}
|
self.headers = {"Connection": "close"}
|
||||||
self.isGetingToken = False
|
self.isGetingToken = False
|
||||||
self.isRuning = True
|
|
||||||
self.token = None
|
self.token = None
|
||||||
self.log = {}
|
self.log = {}
|
||||||
self.setup()
|
self._get_token()
|
||||||
|
|
||||||
def _get_token_loop(self):
|
def _get_token(self):
|
||||||
while self.isRuning:
|
|
||||||
self.isGetingToken = True
|
self.isGetingToken = True
|
||||||
params = {
|
params = {
|
||||||
'grant_type': 'client_credentials',
|
'grant_type': 'client_credentials',
|
||||||
|
@ -51,16 +49,6 @@ class DhClient:
|
||||||
self.headers['Authorization'] = 'bearer ' + res['access_token']
|
self.headers['Authorization'] = 'bearer ' + res['access_token']
|
||||||
self.headers['User-Id'] = '1'
|
self.headers['User-Id'] = '1'
|
||||||
self.isGetingToken = False
|
self.isGetingToken = False
|
||||||
time.sleep(600)
|
|
||||||
|
|
||||||
def setup(self):
|
|
||||||
Thread(target=DhClient._get_token_loop, args=(self, ), daemon=True).start()
|
|
||||||
|
|
||||||
def __del__(self):
|
|
||||||
"""
|
|
||||||
自定义销毁
|
|
||||||
"""
|
|
||||||
self.isRuning = False
|
|
||||||
|
|
||||||
def request(self, url: str, method: str, params=dict(), json=dict(), timeout=120,
|
def request(self, url: str, method: str, params=dict(), json=dict(), timeout=120,
|
||||||
file_path_rela=None, raise_exception=True):
|
file_path_rela=None, raise_exception=True):
|
||||||
|
@ -74,11 +62,6 @@ class DhClient:
|
||||||
if params:
|
if params:
|
||||||
url = url.format(**params)
|
url = url.format(**params)
|
||||||
self.log.update({"path": url})
|
self.log.update({"path": url})
|
||||||
if self.isGetingToken:
|
|
||||||
wait_num = 0
|
|
||||||
while self.isGetingToken and wait_num < 3:
|
|
||||||
time.sleep(0.5)
|
|
||||||
wait_num = wait_num + 1
|
|
||||||
r = getattr(requests, method)('{}{}'.format(settings.DAHUA_BASE_URL, url),
|
r = getattr(requests, method)('{}{}'.format(settings.DAHUA_BASE_URL, url),
|
||||||
headers=self.headers, params=params, json=json,
|
headers=self.headers, params=params, json=json,
|
||||||
timeout=timeout, files=files, verify=False)
|
timeout=timeout, files=files, verify=False)
|
||||||
|
|
|
@ -31,12 +31,10 @@ class SpClient:
|
||||||
self.password = password
|
self.password = password
|
||||||
self.headers = {"Connection": "close"}
|
self.headers = {"Connection": "close"}
|
||||||
self.isGetingToken = False
|
self.isGetingToken = False
|
||||||
self.isRuning = True
|
|
||||||
self.log = {}
|
self.log = {}
|
||||||
self.setup()
|
self._get_token()
|
||||||
|
|
||||||
def _get_token_loop(self):
|
def _get_token(self):
|
||||||
while self.isRuning:
|
|
||||||
self.isGetingToken = True
|
self.isGetingToken = True
|
||||||
json_data = {
|
json_data = {
|
||||||
"user": {
|
"user": {
|
||||||
|
@ -48,16 +46,6 @@ class SpClient:
|
||||||
if is_ok == 'success':
|
if is_ok == 'success':
|
||||||
self.headers['Authorization'] = 'Bearer ' + res['user']['token']
|
self.headers['Authorization'] = 'Bearer ' + res['user']['token']
|
||||||
self.isGetingToken = False
|
self.isGetingToken = False
|
||||||
time.sleep(1200)
|
|
||||||
|
|
||||||
def setup(self):
|
|
||||||
Thread(target=SpClient._get_token_loop, args=(self, ), daemon=True).start()
|
|
||||||
|
|
||||||
def __del__(self):
|
|
||||||
"""
|
|
||||||
自定义销毁
|
|
||||||
"""
|
|
||||||
self.isRuning = False
|
|
||||||
|
|
||||||
def request(self, url: str, method: str, params=dict(), json=dict(), timeout=120,
|
def request(self, url: str, method: str, params=dict(), json=dict(), timeout=120,
|
||||||
file_path_rela=None, raise_exception=True):
|
file_path_rela=None, raise_exception=True):
|
||||||
|
@ -70,11 +58,6 @@ class SpClient:
|
||||||
files = {'file': open(settings.BASE_DIR + file_path_rela, 'rb')}
|
files = {'file': open(settings.BASE_DIR + file_path_rela, 'rb')}
|
||||||
if params:
|
if params:
|
||||||
url = url.format(**params)
|
url = url.format(**params)
|
||||||
if self.isGetingToken:
|
|
||||||
wait_num = 0
|
|
||||||
while self.isGetingToken and wait_num < 3:
|
|
||||||
time.sleep(0.5)
|
|
||||||
wait_num = wait_num + 1
|
|
||||||
r = getattr(requests, method)('{}{}'.format(settings.SP_BASE_URL, url),
|
r = getattr(requests, method)('{}{}'.format(settings.SP_BASE_URL, url),
|
||||||
headers=self.headers, params=params, json=json,
|
headers=self.headers, params=params, json=json,
|
||||||
timeout=timeout, files=files, verify=False)
|
timeout=timeout, files=files, verify=False)
|
||||||
|
|
|
@ -5,6 +5,7 @@ from apps.utils.tasks import CustomTask
|
||||||
from apps.third.models import Tlog
|
from apps.third.models import Tlog
|
||||||
from celery import shared_task
|
from celery import shared_task
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
from apps.third.clients import xxClient, dhClient, spClient
|
||||||
|
|
||||||
|
|
||||||
@shared_task(base=CustomTask)
|
@shared_task(base=CustomTask)
|
||||||
|
@ -16,3 +17,18 @@ def clear_tlog():
|
||||||
now = timezone.now()
|
now = timezone.now()
|
||||||
days7_ago = now - timedelta(days=7)
|
days7_ago = now - timedelta(days=7)
|
||||||
Tlog.objects.filter(create_time__lte=days7_ago).delete()
|
Tlog.objects.filter(create_time__lte=days7_ago).delete()
|
||||||
|
|
||||||
|
|
||||||
|
@shared_task(base=CustomTask)
|
||||||
|
def get_xx_token():
|
||||||
|
xxClient._get_token()
|
||||||
|
|
||||||
|
|
||||||
|
@shared_task(base=CustomTask)
|
||||||
|
def get_dh_token():
|
||||||
|
dhClient._get_token()
|
||||||
|
|
||||||
|
|
||||||
|
@shared_task(base=CustomTask)
|
||||||
|
def get_sp_token():
|
||||||
|
spClient._get_token()
|
||||||
|
|
|
@ -50,11 +50,6 @@ 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}
|
||||||
if self.isGetingToken:
|
|
||||||
wait_num = 0
|
|
||||||
while self.isGetingToken and wait_num < 3:
|
|
||||||
time.sleep(0.5)
|
|
||||||
wait_num = wait_num + 1
|
|
||||||
r = getattr(requests, method)('{}{}'.format(settings.XX_BASE_URL, url),
|
r = getattr(requests, method)('{}{}'.format(settings.XX_BASE_URL, url),
|
||||||
headers=self.headers, params=params, json=json, timeout=timeout, verify=False)
|
headers=self.headers, params=params, json=json, timeout=timeout, verify=False)
|
||||||
# if settings.DEBUG:
|
# if settings.DEBUG:
|
||||||
|
@ -63,10 +58,10 @@ class XxClient:
|
||||||
if 300 > r.status_code >= 200:
|
if 300 > r.status_code >= 200:
|
||||||
ret = r.json()
|
ret = r.json()
|
||||||
if ret['errorCode'] != 0:
|
if ret['errorCode'] != 0:
|
||||||
if ret.get('errorCode') in ['1060000', 1060000]:
|
# if ret.get('errorCode') in ['1060000', 1060000]:
|
||||||
self._get_token() # 重新获取token
|
# self._get_token() # 重新获取token
|
||||||
self.request(url, method, params, json, timeout, raise_exception) # 重新请求
|
# self.request(url, method, params, json, timeout, raise_exception) # 重新请求
|
||||||
return
|
# return
|
||||||
err_detail = dict(detail='寻息错误:' + '|'.join(ret['errorMsg']),
|
err_detail = dict(detail='寻息错误:' + '|'.join(ret['errorMsg']),
|
||||||
code='xx_' + str(ret['errorCode']))
|
code='xx_' + str(ret['errorCode']))
|
||||||
self.handle_log(result='fail', response=ret)
|
self.handle_log(result='fail', response=ret)
|
||||||
|
|
Loading…
Reference in New Issue