|
@@ -7,6 +7,7 @@ from Ansjer.config import SERVER_TYPE, LOGGER, CONFIG_INFO, CONFIG_CN
|
|
from Model.models import Device_Info, UidSetModel, UID_Preview, VoicePromptModel, UidChannelSetModel, \
|
|
from Model.models import Device_Info, UidSetModel, UID_Preview, VoicePromptModel, UidChannelSetModel, \
|
|
AiService, CountryModel, CityInformation, IPAddr
|
|
AiService, CountryModel, CityInformation, IPAddr
|
|
from Object.ETkObject import ETkObject
|
|
from Object.ETkObject import ETkObject
|
|
|
|
+from Object.RedisObject import RedisObject
|
|
from Service.CommonService import CommonService
|
|
from Service.CommonService import CommonService
|
|
from Object.IPWeatherObject import IPQuery, GeoIP2
|
|
from Object.IPWeatherObject import IPQuery, GeoIP2
|
|
|
|
|
|
@@ -22,6 +23,9 @@ def update_device_shadow(request):
|
|
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('---更新设备影子---,使用配置:{}, 参数:{}'.format(SERVER_TYPE,
|
|
json.dumps(request_dict.dict())))
|
|
json.dumps(request_dict.dict())))
|
|
|
|
+ # redis加锁
|
|
|
|
+ redis_obj = RedisObject()
|
|
|
|
+ redis_key = None
|
|
|
|
|
|
try:
|
|
try:
|
|
etk = request_dict.get('etk', None)
|
|
etk = request_dict.get('etk', None)
|
|
@@ -68,7 +72,12 @@ def update_device_shadow(request):
|
|
|
|
|
|
# 更新ip信息
|
|
# 更新ip信息
|
|
update_ip_info(ip, uid)
|
|
update_ip_info(ip, uid)
|
|
-
|
|
|
|
|
|
+ else:
|
|
|
|
+ redis_key = f"DEVICE:UPDATE:SHADOW:{uid}"
|
|
|
|
+ is_lock = redis_obj.CONN.set(redis_key, nx=True, ex=60)
|
|
|
|
+ if not is_lock:
|
|
|
|
+ return JsonResponse(status=200, data={'code': 5, 'msg': 'Please try again one minute later!',
|
|
|
|
+ 'data': {}})
|
|
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)
|
|
@@ -150,8 +159,12 @@ def update_device_shadow(request):
|
|
qs_dict['addTime'] = nowTime
|
|
qs_dict['addTime'] = nowTime
|
|
UidSetModel.objects.create(**qs_dict)
|
|
UidSetModel.objects.create(**qs_dict)
|
|
LOGGER.info('***设备影子保存成功{}'.format(uid))
|
|
LOGGER.info('***设备影子保存成功{}'.format(uid))
|
|
|
|
+ if redis_key:
|
|
|
|
+ redis_obj.del_data(redis_key)
|
|
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:
|
|
|
|
+ if redis_key:
|
|
|
|
+ redis_obj.del_data(redis_key)
|
|
LOGGER.info('更新设备影子异常: errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
LOGGER.info('更新设备影子异常: errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
return JsonResponse(status=200, data={'code': 1000001, 'update_shadow_error': repr(e)})
|
|
return JsonResponse(status=200, data={'code': 1000001, 'update_shadow_error': repr(e)})
|
|
|
|
|