Przeglądaj źródła

优化消息跳转详情

zhangdongming 1 rok temu
rodzic
commit
aa6dcdfdd7
1 zmienionych plików z 75 dodań i 67 usunięć
  1. 75 67
      Controller/DetectControllerV2.py

+ 75 - 67
Controller/DetectControllerV2.py

@@ -5,6 +5,7 @@ import time
 import boto3
 import botocore
 import oss2
+import redis
 from botocore import client
 from django.http import JsonResponse
 from django.views.generic.base import View
@@ -12,6 +13,7 @@ from django.views.generic.base import View
 from Ansjer.config import DETECT_PUSH_DOMAIN, DETECT_PUSH_DOMAINS, DETECT_PUSH_DOMAIN_JIUAN, DETECT_PUSH_DOMAINS_JIUAN, \
     OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, LOGGER, ALGORITHM_COMBO_TYPES
 from Ansjer.config import PUSH_BUCKET, CONFIG_INFO, CONFIG_CN, CONFIG_EUR, CONFIG_US
+from Ansjer.config import PUSH_REDIS_ADDRESS
 from Model.models import Device_Info, Equipment_Info, UidSetModel, UidPushModel, CompanyModel, SysMsgModel, \
     AiService, VodBucketModel
 from Object.ETkObject import ETkObject
@@ -23,8 +25,6 @@ from Object.utils import LocalDateTimeUtil
 from Service.CommonService import CommonService
 from Service.EquipmentInfoService import EquipmentInfoService
 from Service.VodHlsService import SplitVodHlsObject
-import redis
-from Ansjer.config import PUSH_REDIS_ADDRESS
 
 
 class DetectControllerViewV2(View):
@@ -528,46 +528,26 @@ class DetectControllerViewV2(View):
 
     # redis_obj,is_st,storage_location,uid,channel,event_type,event_time,event_tag)
     def get_redis_url(self, **params):
-        oss_img_bucket = params['oss_img_bucket']
-
-        # 国内生产环境默认不实例OCI对象
-        oci = self.get_oci_client()
-        uid = params['uid']
-        is_st = params['is_st']
-        storage_location = params['storage_location']
-        region = params['region']
-        aws_s3 = params['aws_s3']
-        aws_s3_cn = params['aws_s3_cn']
-        redis_obj = params['redis_obj']
-        channel = params['channel']
-        event_time = params['event_time']
-        img_list = []
-        img_url = ''
-        if is_st == 1:
-            thumbspng = '{}/{}/{}.jpeg'.format(uid, channel, event_time)
-            if storage_location == 1:  # 阿里云oss
-                img_url = oss_img_bucket.sign_url('GET', thumbspng, 300)
-            elif storage_location in [3, 4]:
-                prefix_name = f'{uid}/'
-                img_url = DetectControllerViewV2.oci_object_url(oci, redis_obj, uid, prefix_name)
-                if img_url:
-                    img_url = img_url + thumbspng
-            else:
-                params = {'Key': thumbspng}
-                if region == 1:  # AWS国外
-                    params['Bucket'] = 'foreignpush'
-                    img_url = aws_s3.generate_presigned_url(
-                        'get_object', Params=params, ExpiresIn=300)
-                else:  # AWS国内
-                    params['Bucket'] = 'push'
-                    img_url = aws_s3_cn.generate_presigned_url(
-                        'get_object', Params=params, ExpiresIn=300)
-            img_list = [img_url]
-        elif is_st == 3 or is_st == 4:
-            # 列表装载回放时间戳标记
+        try:
+            oss_img_bucket = params['oss_img_bucket']
+
+            # 国内生产环境默认不实例OCI对象
+            oci = self.get_oci_client()
+            uid = params['uid']
+            is_st = params['is_st']
+            storage_location = params['storage_location']
+            region = params['region']
+            aws_s3 = params['aws_s3']
+            aws_s3_cn = params['aws_s3_cn']
+            redis_obj = params['redis_obj']
+            channel = params['channel']
+            event_time = params['event_time']
+            event_type = int(params['event_type'])
+            event_tag = params['event_tag']
             img_list = []
-            for i in range(is_st):
-                thumbspng = '{}/{}/{}_{}.jpeg'.format(uid, channel, event_time, i)
+            img_url = ''
+            if is_st == 1:
+                thumbspng = '{}/{}/{}.jpeg'.format(uid, channel, event_time)
                 if storage_location == 1:  # 阿里云oss
                     img_url = oss_img_bucket.sign_url('GET', thumbspng, 300)
                 elif storage_location in [3, 4]:
@@ -577,38 +557,65 @@ class DetectControllerViewV2(View):
                         img_url = img_url + thumbspng
                 else:
                     params = {'Key': thumbspng}
-                    if region == 1:  # 国外AWS
+                    if region == 1:  # AWS国外
                         params['Bucket'] = 'foreignpush'
                         img_url = aws_s3.generate_presigned_url(
                             'get_object', Params=params, ExpiresIn=300)
-                    else:  # 国内AWS
+                    else:  # AWS国内
                         params['Bucket'] = 'push'
                         img_url = aws_s3_cn.generate_presigned_url(
                             'get_object', Params=params, ExpiresIn=300)
-                img_list.append(img_url)
-        ai_event_type_list = EquipmentInfoService.get_combo_types(params['event_type'], params['event_tag'])
-        msg_data = {
-            "id": "",
-            "status": False,
-            "answer_status": False,
-            "alarm": "",
-            "is_st": params['is_st'],
-            "storage_location": params['storage_location'],
-            "devUid": uid,
-            "devNickName": "",
-            "Channel": params['channel'],
-            "eventType": params['event_type'],
-            "eventTime": params['event_time'],
-            "receiveTime": "",
-            "addTime": 0,
-            "borderCoords": "",
-            "eventTag": params['event_tag'],
-            "img": img_url,
-            "img_list": img_list,
-            "uid_type": 0,
-            "ai_event_type_list": ai_event_type_list
-        }
-        return msg_data
+                img_list = [img_url]
+            elif is_st == 3 or is_st == 4:
+                # 列表装载回放时间戳标记
+                img_list = []
+                for i in range(is_st):
+                    thumbspng = '{}/{}/{}_{}.jpeg'.format(uid, channel, event_time, i)
+                    if storage_location == 1:  # 阿里云oss
+                        img_url = oss_img_bucket.sign_url('GET', thumbspng, 300)
+                    elif storage_location in [3, 4]:
+                        prefix_name = f'{uid}/'
+                        img_url = DetectControllerViewV2.oci_object_url(oci, redis_obj, uid, prefix_name)
+                        if img_url:
+                            img_url = img_url + thumbspng
+                    else:
+                        params = {'Key': thumbspng}
+                        if region == 1:  # 国外AWS
+                            params['Bucket'] = 'foreignpush'
+                            img_url = aws_s3.generate_presigned_url(
+                                'get_object', Params=params, ExpiresIn=300)
+                        else:  # 国内AWS
+                            params['Bucket'] = 'push'
+                            img_url = aws_s3_cn.generate_presigned_url(
+                                'get_object', Params=params, ExpiresIn=300)
+                    img_list.append(img_url)
+            ai_event_type_list = EquipmentInfoService.get_combo_types(event_type, event_tag)
+            msg_data = {
+                "id": "",
+                "status": False,
+                "answer_status": False,
+                "alarm": "",
+                "is_st": is_st,
+                "storage_location": storage_location,
+                "devUid": uid,
+                "devNickName": "",
+                "Channel": channel,
+                "eventType": event_type,
+                "eventTime": event_time,
+                "receiveTime": 0,
+                "addTime": 0,
+                "borderCoords": "",
+                "eventTag": event_tag,
+                "img": img_url,
+                "img_list": img_list,
+                "uid_type": 0,
+                "ai_event_type_list": ai_event_type_list
+            }
+            return msg_data
+        except Exception as e:
+            LOGGER.error('消息跳转异常:, errLine:{}, errMsg:{}'
+                         .format(e.__traceback__.tb_lineno, repr(e)))
+            return []
 
     def do_transfer(self, request_dict, response, userID):
         event_time = request_dict.get('eventTime', None)
@@ -648,6 +655,7 @@ class DetectControllerViewV2(View):
 
             if msg_data:
                 msg_dict = json.loads(msg_data)
+                LOGGER.info(f'缓存数据:{msg_dict}')
                 params = {'redis_obj': redis_obj, 'is_st': msg_dict['is_st'], 'region': region, 'aws_s3': aws_s3,
                           'storage_location': msg_dict['storage_location'], 'aws_s3_cn': aws_s3_cn,
                           'uid': uid, 'channel': channel, 'event_type': event_type, 'oss_img_bucket': oss_img_bucket,