zhangdongming 1 year ago
parent
commit
93dc35db68
1 changed files with 73 additions and 67 deletions
  1. 73 67
      Controller/DetectControllerV2.py

+ 73 - 67
Controller/DetectControllerV2.py

@@ -5,6 +5,7 @@ import time
 import boto3
 import boto3
 import botocore
 import botocore
 import oss2
 import oss2
+import redis
 from botocore import client
 from botocore import client
 from django.http import JsonResponse
 from django.http import JsonResponse
 from django.views.generic.base import View
 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, \
 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
     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_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, \
 from Model.models import Device_Info, Equipment_Info, UidSetModel, UidPushModel, CompanyModel, SysMsgModel, \
     AiService, VodBucketModel
     AiService, VodBucketModel
 from Object.ETkObject import ETkObject
 from Object.ETkObject import ETkObject
@@ -23,8 +25,6 @@ from Object.utils import LocalDateTimeUtil
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
 from Service.EquipmentInfoService import EquipmentInfoService
 from Service.EquipmentInfoService import EquipmentInfoService
 from Service.VodHlsService import SplitVodHlsObject
 from Service.VodHlsService import SplitVodHlsObject
-import redis
-from Ansjer.config import PUSH_REDIS_ADDRESS
 
 
 
 
 class DetectControllerViewV2(View):
 class DetectControllerViewV2(View):
@@ -528,46 +528,25 @@ class DetectControllerViewV2(View):
 
 
     # redis_obj,is_st,storage_location,uid,channel,event_type,event_time,event_tag)
     # redis_obj,is_st,storage_location,uid,channel,event_type,event_time,event_tag)
     def get_redis_url(self, **params):
     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'])
             img_list = []
             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
                 if storage_location == 1:  # 阿里云oss
                     img_url = oss_img_bucket.sign_url('GET', thumbspng, 300)
                     img_url = oss_img_bucket.sign_url('GET', thumbspng, 300)
                 elif storage_location in [3, 4]:
                 elif storage_location in [3, 4]:
@@ -577,38 +556,65 @@ class DetectControllerViewV2(View):
                         img_url = img_url + thumbspng
                         img_url = img_url + thumbspng
                 else:
                 else:
                     params = {'Key': thumbspng}
                     params = {'Key': thumbspng}
-                    if region == 1:  # 国外AWS
+                    if region == 1:  # AWS国外
                         params['Bucket'] = 'foreignpush'
                         params['Bucket'] = 'foreignpush'
                         img_url = aws_s3.generate_presigned_url(
                         img_url = aws_s3.generate_presigned_url(
                             'get_object', Params=params, ExpiresIn=300)
                             'get_object', Params=params, ExpiresIn=300)
-                    else:  # 国内AWS
+                    else:  # AWS国内
                         params['Bucket'] = 'push'
                         params['Bucket'] = 'push'
                         img_url = aws_s3_cn.generate_presigned_url(
                         img_url = aws_s3_cn.generate_presigned_url(
                             'get_object', Params=params, ExpiresIn=300)
                             '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, 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": event_type,
+                "eventTime": params['event_time'],
+                "receiveTime": 0,
+                "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
+        except Exception as e:
+            LOGGER.error('消息跳转异常:, errLine:{}, errMsg:{}'
+                         .format(e.__traceback__.tb_lineno, repr(e)))
+
 
 
     def do_transfer(self, request_dict, response, userID):
     def do_transfer(self, request_dict, response, userID):
         event_time = request_dict.get('eventTime', None)
         event_time = request_dict.get('eventTime', None)