|
@@ -1,28 +1,9 @@
|
|
|
-#!/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 threading
|
|
|
import time
|
|
|
-
|
|
|
import requests
|
|
|
from django.http import JsonResponse
|
|
|
from ratelimit.decorators import ratelimit
|
|
|
-
|
|
|
from AnsjerPush.config import SERVER_TYPE
|
|
|
from Model.models import Device_Info, UidSetModel, UID_Preview, VoicePromptModel, UID_Bucket, UidChannelSetModel, \
|
|
|
AiService, CountryModel
|
|
@@ -45,9 +26,6 @@ def generate_utk(request):
|
|
|
uid = request_dict.get('uid', None)
|
|
|
if username and password:
|
|
|
if username == 'debug_user' and password == 'debug_password':
|
|
|
- # utko = UidTokenObject()
|
|
|
- # # right
|
|
|
- # utko.generate(data={'uid': uid})
|
|
|
etkObj = ETkObject(etk='')
|
|
|
etk = etkObj.encrypt(uid)
|
|
|
return response.json(0, {'etk': etk})
|
|
@@ -57,7 +35,7 @@ def generate_utk(request):
|
|
|
return response.json(444, 'username password')
|
|
|
|
|
|
|
|
|
-# 设备影子更新
|
|
|
+# 更新设备影子
|
|
|
def update_device_shadow(request):
|
|
|
request.encoding = 'utf-8'
|
|
|
if request.method == 'POST':
|
|
@@ -66,19 +44,22 @@ def update_device_shadow(request):
|
|
|
request_dict = request.GET
|
|
|
else:
|
|
|
return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
|
|
|
+
|
|
|
logger = logging.getLogger('info')
|
|
|
+ logger.info('---更新设备影子---, 使用配置:{}, 参数:{}'.format(SERVER_TYPE, request_dict.dict()))
|
|
|
+ if SERVER_TYPE == 'Ansjer.formal_settings': # 如果不为美国配置,异步请求更新国内和欧洲数据
|
|
|
+ domain_name_list = ['push.zositechc.cn'] # 后面加上欧洲域名
|
|
|
+ for domain_name in domain_name_list:
|
|
|
+ url = 'http://{}/deviceShadow/update'.format(domain_name)
|
|
|
+ request_thread = threading.Thread(target=do_request_thread, args=(url, request_dict.dict()))
|
|
|
+ request_thread.start()
|
|
|
+
|
|
|
try:
|
|
|
etk = request_dict.get('etk', None)
|
|
|
eto = ETkObject(etk)
|
|
|
uid = eto.uid
|
|
|
if not uid:
|
|
|
return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
|
|
|
- logger.info('使用配置: {}'.format(SERVER_TYPE))
|
|
|
- logger.info('data: {}'.format(request_dict.dict()))
|
|
|
-
|
|
|
- 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)
|
|
|
|
|
|
nowTime = int(time.time())
|
|
|
|
|
@@ -116,8 +97,8 @@ def update_device_shadow(request):
|
|
|
|
|
|
# 关闭AI
|
|
|
AiService.objects.filter(uid=uid, use_status=1).update(detect_status=0, detect_group='')
|
|
|
-
|
|
|
logger.info('{}重置成功'.format(uid))
|
|
|
+
|
|
|
ucode = request_dict.get('ucode', None)
|
|
|
version = request_dict.get('version', None)
|
|
|
p2p_region = request_dict.get('p2p_region', None)
|
|
@@ -197,6 +178,9 @@ def update_device_shadow(request):
|
|
|
logger.info('***设备影子保存成功{}'.format(uid))
|
|
|
return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
|
|
|
except Exception as e:
|
|
|
- print('异步保存设备影子信息报错,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
logger.info('更新设备影子异常: {}'.format(repr(e)))
|
|
|
return JsonResponse(status=200, data={'code': 0, 'update_shadow_error': repr(e)})
|
|
|
+
|
|
|
+
|
|
|
+def do_request_thread(url, data):
|
|
|
+ requests.post(url=url, data=data, timeout=2)
|