Просмотр исходного кода

修改更新设备影子接口

locky 2 лет назад
Родитель
Сommit
eb333ef669
1 измененных файлов с 19 добавлено и 35 удалено
  1. 19 35
      Controller/ShadowController.py

+ 19 - 35
Controller/ShadowController.py

@@ -1,24 +1,7 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""
-@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
-@AUTHOR: ASJRD018
-@NAME: AnsjerPush
-@software: PyCharm
-@DATE: 2020/2/14 13:54
-@Version: python3.6
-@MODIFY DECORD:ansjer dev
-@file: ShadowController.py
-@Contact: chanjunkai@163.com
-"""
-# 测试环境
-# test.shadow.dvema.com
-# 生产环境
-# shadow.dvema.com
-# 设备影子更新
 import logging
 import logging
-import time
 import threading
 import threading
+import time
+
 import requests
 import requests
 from django.http import JsonResponse
 from django.http import JsonResponse
 from ratelimit.decorators import ratelimit
 from ratelimit.decorators import ratelimit
@@ -45,9 +28,6 @@ def generate_utk(request):
     uid = request_dict.get('uid', None)
     uid = request_dict.get('uid', None)
     if username and password:
     if username and password:
         if username == 'debug_user' and password == 'debug_password':
         if username == 'debug_user' and password == 'debug_password':
-            # utko = UidTokenObject()
-            # # right
-            # utko.generate(data={'uid': uid})
             etkObj = ETkObject(etk='')
             etkObj = ETkObject(etk='')
             etk = etkObj.encrypt(uid)
             etk = etkObj.encrypt(uid)
             return response.json(0, {'etk': etk})
             return response.json(0, {'etk': etk})
@@ -57,9 +37,9 @@ def generate_utk(request):
         return response.json(444, 'username password')
         return response.json(444, 'username password')
 
 
 
 
-# 设备影子更新
-@ratelimit(key='ip', rate='1/10s', block=True)
-def update_device_shadow(request, aws_s3_client=None):
+# 更新设备影子
+@ratelimit(key='ip', rate='2/1s', block=True)
+def update_device_shadow(request):
     request.encoding = 'utf-8'
     request.encoding = 'utf-8'
     if request.method == 'POST':
     if request.method == 'POST':
         request_dict = request.POST
         request_dict = request.POST
@@ -67,17 +47,22 @@ def update_device_shadow(request, aws_s3_client=None):
         request_dict = request.GET
         request_dict = request.GET
     else:
     else:
         return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
         return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
+
     logger = logging.getLogger('info')
     logger = logging.getLogger('info')
+    logger.info('---更新设备影子---, 使用配置:{}, 参数:{}'.format(SERVER_TYPE, request_dict.dict()))
+    # 如果为美国配置,异步请求更新国内和欧洲数据
+    if SERVER_TYPE == 'Ansjer.formal_settings':
+        domain_name_list = ['push.zositechc.cn', 'push.zositeche.com']
+        request_thread = threading.Thread(target=do_request_thread, args=(domain_name_list, request_dict.dict()))
+        request_thread.start()
+
     try:
     try:
         etk = request_dict.get('etk', None)
         etk = request_dict.get('etk', None)
         eto = ETkObject(etk)
         eto = ETkObject(etk)
         uid = eto.uid
         uid = eto.uid
         if not uid:
         if not uid:
             return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
             return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
-        logger.info('使用配置: {}'.format(SERVER_TYPE))
-        logger.info('data: {}'.format(request_dict.dict()))
-        asy = threading.Thread(target=async_data_save, args=(request_dict, request))
-        asy.start()
+
         nowTime = int(time.time())
         nowTime = int(time.time())
 
 
         # 重置按钮
         # 重置按钮
@@ -114,8 +99,8 @@ def update_device_shadow(request, aws_s3_client=None):
 
 
             # 关闭AI
             # 关闭AI
             AiService.objects.filter(uid=uid, use_status=1).update(detect_status=0, detect_group='')
             AiService.objects.filter(uid=uid, use_status=1).update(detect_status=0, detect_group='')
-
             logger.info('{}重置成功'.format(uid))
             logger.info('{}重置成功'.format(uid))
+
         ucode = request_dict.get('ucode', None)
         ucode = request_dict.get('ucode', None)
         version = request_dict.get('version', None)
         version = request_dict.get('version', None)
         p2p_region = request_dict.get('p2p_region', None)
         p2p_region = request_dict.get('p2p_region', None)
@@ -195,12 +180,11 @@ def update_device_shadow(request, aws_s3_client=None):
         logger.info('***设备影子保存成功{}'.format(uid))
         logger.info('***设备影子保存成功{}'.format(uid))
         return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
         return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
     except Exception as e:
     except Exception as e:
-        print('异步保存设备影子信息报错,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
         logger.info('更新设备影子异常: {}'.format(repr(e)))
         logger.info('更新设备影子异常: {}'.format(repr(e)))
         return JsonResponse(status=200, data={'code': 0, 'update_shadow_error': repr(e)})
         return JsonResponse(status=200, data={'code': 0, 'update_shadow_error': repr(e)})
 
 
 
 
-def async_data_save(request_dict, request):
-    if SERVER_TYPE != 'Ansjer.test_settings':
-        if SERVER_TYPE != 'Ansjer.cn_formal_settings':  # 同步更新国内数据
-            requests.post(url='http://shadow.zositechc.cn/deviceShadow/update', data=request_dict.dict(), timeout=2)
+def do_request_thread(domain_name_list, data):
+    for domain_name in domain_name_list:
+        url = 'http://{}/deviceShadow/update'.format(domain_name)
+        requests.post(url=url, data=data, timeout=2)