三方错误日志记录

This commit is contained in:
曹前明 2022-08-22 10:28:28 +08:00
parent 6c6ecc2619
commit 6eabca5314
7 changed files with 26 additions and 14 deletions

View File

@ -157,7 +157,7 @@ class HrmService:
if dh_dchannels:
pass
else:
# 查找可授予的门禁
# 查找可授予的门禁通道号
dh_dchannels = list(TDevice.objects.filter(type=TDevice.DEVICE_DCHANNEL,
access_list__contains=ep.type).values_list('code', flat=True))
if dh_dchannels:

View File

@ -1,6 +1,7 @@
import json
import time
from threading import Thread
import traceback
import uuid
import requests
@ -79,7 +80,7 @@ class DhClient:
headers=self.headers, params=params, json=json,
timeout=timeout, files=files, verify=False)
except Exception:
self.handle_log(result='error')
self.handle_log(result='error', errors=traceback.format_exc())
if raise_exception:
raise APIException(**DH_REQUEST_ERROR)
return 'error', DH_REQUEST_ERROR
@ -99,7 +100,7 @@ class DhClient:
# self.handle_log(result='success', response=ret) # 成功的日志就不记录了
return 'success', ret['data'] if 'data' in ret else None
self.handle_log(result='error', response=None)
self.handle_log(result='error', errors=traceback.format_exc())
if raise_exception:
raise APIException(**DH_REQUEST_ERROR)
return 'error', DH_REQUEST_ERROR
@ -113,11 +114,12 @@ class DhClient:
response_ms = int(response_timedelta.total_seconds() * 1000)
return max(response_ms, 0)
def handle_log(self, result, response=None):
def handle_log(self, result, response=None, errors=None):
self.log.update({
"result": result,
"response": response,
"response_ms": self._get_response_ms()
"response_ms": self._get_response_ms(),
"errors": errors
})
Tlog(**self.log).save()

View File

@ -43,7 +43,8 @@ class TDevice(BaseModel):
employee = models.OneToOneField(Employee, verbose_name='当前绑定人员', on_delete=models.SET_NULL,
null=True, blank=True)
is_clock = models.BooleanField('是否打卡设备', default=False)
access_list = models.JSONField('自动下发人员类型', default=list, null=False, blank=True, help_text='employee/remployee/visitor')
access_list = models.JSONField('自动下发人员类型', default=list,
null=False, blank=True, help_text='employee/remployee/visitor')
third_info = models.JSONField('三方信息', default=dict,
null=False, blank=True)

View File

@ -24,6 +24,11 @@ class TDeviceUpdateSerializer(CustomModelSerializer):
model = TDevice
fields = ['is_clock', 'access_list']
def update(self, instance, validated_data):
if validated_data.get('access_list', []):
validated_data['access_list'] = ['employee', 'remployee', 'visitor']
return super().update(instance, validated_data)
class TDeviceSimpleSerializer(CustomModelSerializer):
class Meta:

View File

@ -1,5 +1,6 @@
import time
from threading import Thread
import traceback
import uuid
import requests
@ -88,6 +89,7 @@ class SpClient:
headers=self.headers, params=params, json=json,
timeout=timeout, files=files, verify=False)
except Exception:
self.handle_log(result='error', errors=traceback.format_exc())
if raise_exception:
raise APIException(**SP_REQUEST_ERROR)
return 'error', SP_REQUEST_ERROR
@ -104,7 +106,7 @@ class SpClient:
return 'fail', dict(detail=detail, code='sp_'+str(ret['code']))
# self.handle_log(result='success', response=ret)
return 'success', ret
self.handle_log(result='error', response=None)
self.handle_log(result='error', errors=traceback.format_exc())
if raise_exception:
raise APIException(**SP_REQUEST_ERROR)
return 'error', SP_REQUEST_ERROR
@ -147,10 +149,11 @@ class SpClient:
response_ms = int(response_timedelta.total_seconds() * 1000)
return max(response_ms, 0)
def handle_log(self, result, response=None):
def handle_log(self, result, response=None, errors=None):
self.log.update({
"result": result,
"response": response,
"response_ms": self._get_response_ms()
"response_ms": self._get_response_ms(),
"errors": errors
})
Tlog(**self.log).save()

View File

@ -233,7 +233,7 @@ class DhCommonViewSet(CreateModelMixin, CustomGenericViewSet):
取消事件订阅
"""
dhClient.request(**dhapis['mq_unsubscribe'],
params={'name': 'qyjy_ehs'})
params={'name': settings.DAHUA_SUBSCRIBE})
return Response()
@action(methods=['post'], detail=False,

View File

@ -1,5 +1,6 @@
import time
from threading import Thread
import traceback
import uuid
import requests
from django.conf import settings
@ -86,7 +87,6 @@ class XxClient:
# print_roundtrip(r)
ret = r.json()
if ret.get('errorCode') in ['1060000', 1060000]:
print(ret.get('errorCode'))
self.get_token() # 重新获取token
self.request(url, method, params, json, timeout, raise_exception) # 重新请求
else:
@ -99,7 +99,7 @@ class XxClient:
return 'fail', err_detail
# self.handle_log(result='success', response=None)
return 'success', ret['data']
self.handle_log(result='error', response=None)
self.handle_log(result='error', errors=traceback.format_exc())
if raise_exception:
raise APIException(**XX_REQUEST_ERROR)
return 'error', XX_REQUEST_ERROR
@ -113,10 +113,11 @@ class XxClient:
response_ms = int(response_timedelta.total_seconds() * 1000)
return max(response_ms, 0)
def handle_log(self, result, response=None):
def handle_log(self, result, response=None, errors=None):
self.log.update({
"result": result,
"response": response,
"response_ms": self._get_response_ms()
"response_ms": self._get_response_ms(),
"errors": errors
})
Tlog(**self.log).save()