瀏覽代碼

添加捕获异常打印信息

locky 4 年之前
父節點
當前提交
86f4514f4a
共有 1 個文件被更改,包括 152 次插入144 次删除
  1. 152 144
      controller/deviceStatus.py

+ 152 - 144
controller/deviceStatus.py

@@ -227,98 +227,101 @@ class deviceStatus(TemplateView):
         if not data_list:
             return JsonResponse({'code': 101, 'msg': 'Parameter error'})
 
-        UID = data_list[0]['UID']
-        userID = data_list[0]['userID']
-        password = data_list[0]['password']
-        password = CommonService().decode_pwd(password)
-
-        # 获取alexa授权信息
-        alexAuth = AlexaAuthModel.objects.filter(userID=userID).\
-            values('expiresTime', 'access_token', 'refresh_token', 'alexa_region')
-        if not alexAuth.exists():
-            logger.info('UID为 {} 的用户不存在'.format(UID))
-            return JsonResponse({'code': 102, 'msg': 'not found user'})
-        expiresTime = alexAuth[0]['expiresTime']
-        access_token = alexAuth[0]['access_token']
-        refresh_token = alexAuth[0]['refresh_token']
-        alexa_region = alexAuth[0]['alexa_region']
-
-        # 更新alexa token
-        now_time = int(time.time())
-        if now_time > expiresTime:
-            logger.info(refresh_token)
-            res = self.getRefreshToken(refresh_token)
-            logger.info(res)
-            if 'error' not in res:
-                alexAuth.update(
-                    updTime=now_time,
-                    expiresTime=now_time + 3000,
-                    access_token=res['access_token'],
-                    refresh_token=res['refresh_token'],
-                )
-                access_token = res['access_token']
-            else:
-                logger.info('get refresh_token fail')
-                return JsonResponse({'code': 102, 'msg': 'get refresh_token fail'})
-
-        # 添加rtsp记录
-        channel = len(data_list)    # 列表的元素个数即通道数量
-        rtsp_url = tkObject(rank=1).encrypt(data=UID)
-        uid_rtsp_qs = UidRtspModel.objects.filter(uid__contains=UID)
-        if not uid_rtsp_qs.exists():
-            # 创建UidRtsp数据
-            if channel == 1:
-                # 单通道设备
-                UidRtspModel.objects.create(uid=UID, nick=data_list[0]['uid_nick'], region=region, rtsp_url=rtsp_url,
-                                           password=password, addTime=now_time, updTime=now_time)
-            else:
-                # 多通道设备
-                bulk = []
-                for data in data_list:
-                    uid = UID + '_' + str(data['channel'])  # 多通道设备: uid_通道号
-                    uidRtsp = UidRtspModel(uid=uid, nick=data['uid_nick'], region=region, rtsp_url=rtsp_url,
-                                           password=password, addTime=now_time, updTime=now_time)
-                    bulk.append(uidRtsp)
-                UidRtspModel.objects.bulk_create(bulk)
-        else:
-            # 更新UidRtsp数据
-            count = len(uid_rtsp_qs)
-            if count != channel:
-                return JsonResponse({'code': 103, 'msg': '通道数不匹配'})
-            if count == 1:
-                uid_rtsp_qs.update(nick=data_list[0]['uid_nick'], region=region, password=password)
+        try:
+            UID = data_list[0]['UID']
+            userID = data_list[0]['userID']
+            password = data_list[0]['password']
+            password = CommonService().decode_pwd(password)
+
+            # 获取alexa授权信息
+            alexAuth = AlexaAuthModel.objects.filter(userID=userID).\
+                values('expiresTime', 'access_token', 'refresh_token', 'alexa_region')
+            if not alexAuth.exists():
+                logger.info('UID为 {} 的用户不存在'.format(UID))
+                return JsonResponse({'code': 102, 'msg': 'not found user'})
+            expiresTime = alexAuth[0]['expiresTime']
+            access_token = alexAuth[0]['access_token']
+            refresh_token = alexAuth[0]['refresh_token']
+            alexa_region = alexAuth[0]['alexa_region']
+
+            # 更新alexa token
+            now_time = int(time.time())
+            if now_time > expiresTime:
+                logger.info(refresh_token)
+                res = self.getRefreshToken(refresh_token)
+                logger.info(res)
+                if 'error' not in res:
+                    alexAuth.update(
+                        updTime=now_time,
+                        expiresTime=now_time + 3000,
+                        access_token=res['access_token'],
+                        refresh_token=res['refresh_token'],
+                    )
+                    access_token = res['access_token']
+                else:
+                    logger.info('get refresh_token fail')
+                    return JsonResponse({'code': 102, 'msg': 'get refresh_token fail'})
+
+            # 添加rtsp记录
+            channel = len(data_list)    # 列表的元素个数即通道数量
+            rtsp_url = tkObject(rank=1).encrypt(data=UID)
+            uid_rtsp_qs = UidRtspModel.objects.filter(uid__contains=UID)
+            if not uid_rtsp_qs.exists():
+                # 创建UidRtsp数据
+                if channel == 1:
+                    # 单通道设备
+                    UidRtspModel.objects.create(uid=UID, nick=data_list[0]['uid_nick'], region=region, rtsp_url=rtsp_url,
+                                               password=password, addTime=now_time, updTime=now_time)
+                else:
+                    # 多通道设备
+                    bulk = []
+                    for data in data_list:
+                        uid = UID + '_' + str(data['channel'])  # 多通道设备: uid_通道号
+                        uidRtsp = UidRtspModel(uid=uid, nick=data['uid_nick'], region=region, rtsp_url=rtsp_url,
+                                               password=password, addTime=now_time, updTime=now_time)
+                        bulk.append(uidRtsp)
+                    UidRtspModel.objects.bulk_create(bulk)
             else:
-                # 多通道设备
-                for data in data_list:
-                    uid = UID + '_' + str(data['channel'])   # 多通道设备: uid_通道号
-                    UidRtspModel.objects.filter(uid=uid).update(nick=data['uid_nick'], region=region, password=password)
-
-        api_uri = ALEXA_EVENT_API[alexa_region]
-        messageId = str(uuid.uuid4()).strip()
-        bearer_access_token = "Bearer {access_token}".format(access_token=access_token)
-        headers = {"content-type": "application/json", "Authorization": bearer_access_token}
-        endpoints = self.append_endpoint(data_list, channel)
-        payload_json = {
-            "event": {
-                "header": {
-                    "namespace": "Alexa.Discovery",
-                    "name": "AddOrUpdateReport",
-                    "payloadVersion": "3",
-                    "messageId": messageId,
-                },
-                "payload": {
-                    "endpoints": endpoints,
-                    "scope": {
-                        "type": "BearerToken",
-                        "token": 'sdf',
+                # 更新UidRtsp数据
+                count = len(uid_rtsp_qs)
+                if count != channel:
+                    return JsonResponse({'code': 103, 'msg': '通道数不匹配'})
+                if count == 1:
+                    uid_rtsp_qs.update(nick=data_list[0]['uid_nick'], region=region, password=password)
+                else:
+                    # 多通道设备
+                    for data in data_list:
+                        uid = UID + '_' + str(data['channel'])   # 多通道设备: uid_通道号
+                        UidRtspModel.objects.filter(uid=uid).update(nick=data['uid_nick'], region=region, password=password)
+
+            api_uri = ALEXA_EVENT_API[alexa_region]
+            messageId = str(uuid.uuid4()).strip()
+            bearer_access_token = "Bearer {access_token}".format(access_token=access_token)
+            headers = {"content-type": "application/json", "Authorization": bearer_access_token}
+            endpoints = self.append_endpoint(data_list, channel)
+            payload_json = {
+                "event": {
+                    "header": {
+                        "namespace": "Alexa.Discovery",
+                        "name": "AddOrUpdateReport",
+                        "payloadVersion": "3",
+                        "messageId": messageId,
                     },
-                },
+                    "payload": {
+                        "endpoints": endpoints,
+                        "scope": {
+                            "type": "BearerToken",
+                            "token": 'sdf',
+                        },
+                    },
+                }
             }
-        }
 
-        response = requests.post(api_uri, json=payload_json, headers=headers)
-        logger.info('--------Alexa AddOrUpdateReport响应: {}--------'.format(response))
-        return JsonResponse({'res': 'success'})
+            response = requests.post(api_uri, json=payload_json, headers=headers)
+            logger.info('--------Alexa AddOrUpdateReport响应: {}--------'.format(response))
+            return JsonResponse({'res': 'success'})
+        except Exception as e:
+            logger.info('--------添加/更新设备信息V2异常--------: {}'.format(repr(e)))
 
     def append_endpoint(self, data_list, channel):
         # 组织 endpoints 数据
@@ -362,67 +365,72 @@ class deviceStatus(TemplateView):
         if not all([UID, userID]):
             return JsonResponse({'code': 111, 'msg': 'fail'})
 
-        alexAuth = AlexaAuthModel.objects.filter(userID=userID).\
-            values('expiresTime', 'refresh_token', 'access_token', 'alexa_region')
-        if not alexAuth.exists():
-            return JsonResponse({'code': 102, 'msg': 'not found user'})
-
-        expiresTime = alexAuth[0]['expiresTime']
-        refresh_token = alexAuth[0]['refresh_token']
-        access_token = alexAuth[0]['access_token']
-        alexa_region = alexAuth[0]['alexa_region']
-
-        now_time = int(time.time())
-        if now_time > expiresTime:
-            res = self.getRefreshToken(refresh_token)
-            if 'error' not in res:
-                alexAuth.update(
-                    access_token=res['access_token'],
-                    refresh_token=res['refresh_token'],
-                    expiresTime=now_time + 300,
-                    updTime=now_time,
-                )
-                access_token = res['access_token']
-            else:
-                return JsonResponse({'code': 102, 'msg': 'get refresh_token fail'})
-
-        uidRtsp_qs = UidRtspModel.objects.filter(uid__contains=UID).values('uid')
-        if not uidRtsp_qs.exists():
-            return JsonResponse({'code': 103, 'msg': '不存在uidRtsp数据'})
-
-        endpoints = []
-        for uidRtsp in uidRtsp_qs:
-            endpointId = {"endpointId": uidRtsp['uid']}
-            endpoints.append(endpointId)
-
-        headers = {
-            "Authorization": "Bearer " + access_token,
-            "Content-Type": "application/json;charset=UTF-8",
-            "Cache-Control": "no-cache"
-        }
+        try:
+            alexAuth = AlexaAuthModel.objects.filter(userID=userID).\
+                values('expiresTime', 'refresh_token', 'access_token', 'alexa_region')
+            if not alexAuth.exists():
+                return JsonResponse({'code': 102, 'msg': 'not found user'})
+
+            expiresTime = alexAuth[0]['expiresTime']
+            refresh_token = alexAuth[0]['refresh_token']
+            access_token = alexAuth[0]['access_token']
+            alexa_region = alexAuth[0]['alexa_region']
+            logger.info('expiresTime: {}, refresh_token: {}, access_token: {}, alexa_region: {}'.
+                        format(expiresTime, refresh_token, access_token, alexa_region))
+
+            now_time = int(time.time())
+            if now_time > expiresTime:
+                res = self.getRefreshToken(refresh_token)
+                if 'error' not in res:
+                    alexAuth.update(
+                        access_token=res['access_token'],
+                        refresh_token=res['refresh_token'],
+                        expiresTime=now_time + 300,
+                        updTime=now_time,
+                    )
+                    access_token = res['access_token']
+                else:
+                    return JsonResponse({'code': 102, 'msg': 'get refresh_token fail'})
+
+            uidRtsp_qs = UidRtspModel.objects.filter(uid__contains=UID).values('uid')
+            if not uidRtsp_qs.exists():
+                return JsonResponse({'code': 103, 'msg': '不存在uidRtsp数据'})
+
+            endpoints = []
+            for uidRtsp in uidRtsp_qs:
+                endpointId = {"endpointId": uidRtsp['uid']}
+                endpoints.append(endpointId)
+
+            headers = {
+                "Authorization": "Bearer " + access_token,
+                "Content-Type": "application/json;charset=UTF-8",
+                "Cache-Control": "no-cache"
+            }
 
-        payload = {
-            "event": {
-                "header": {
-                    "namespace": "Alexa.Discovery",
-                    "name": "DeleteReport",
-                    "messageId": str(uuid.uuid4()),
-                    "payloadVersion": "3"
-                },
-                "payload": {
-                    "endpoints": endpoints,
-                    "scope": {
-                        "type": "BearerToken",
-                        "token": access_token
+            payload = {
+                "event": {
+                    "header": {
+                        "namespace": "Alexa.Discovery",
+                        "name": "DeleteReport",
+                        "messageId": str(uuid.uuid4()),
+                        "payloadVersion": "3"
+                    },
+                    "payload": {
+                        "endpoints": endpoints,
+                        "scope": {
+                            "type": "BearerToken",
+                            "token": access_token
+                        }
                     }
                 }
             }
-        }
 
-        api_uri = ALEXA_EVENT_API[alexa_region]
-        response = requests.post(api_uri, json=payload, headers=headers)
-        logger.info('--------Alexa DeleteReport响应: {}--------'.format(response))
-        return JsonResponse({'res': 'success'})
+            api_uri = ALEXA_EVENT_API[alexa_region]
+            response = requests.post(api_uri, json=payload, headers=headers)
+            logger.info('--------Alexa DeleteReport响应: {}--------'.format(response))
+            return JsonResponse({'res': 'success'})
+        except Exception as e:
+            logger.info('--------删除设备异常--------: {}'.format(repr(e)))
 
 
     def getRefreshToken(self,refresh_token):