zhangdongming 3 lat temu
rodzic
commit
f7623a9e44
1 zmienionych plików z 8 dodań i 19 usunięć
  1. 8 19
      Controller/ShadowController.py

+ 8 - 19
Controller/ShadowController.py

@@ -21,12 +21,11 @@ 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
 from Object.ETkObject import ETkObject
-from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
 from Service.CommonService import CommonService
 
@@ -58,6 +57,7 @@ def generate_utk(request):
 
 
 # 设备影子更新
+@ratelimit(key='ip', rate='1/1d', block=True)
 def update_device_shadow(request):
     request.encoding = 'utf-8'
     response = ResponseObject()
@@ -68,23 +68,12 @@ def update_device_shadow(request):
     else:
         return response.json(444)
     logger = logging.getLogger('info')
-    redis_obj = RedisObject(db=6)
     try:
-        try:
-            etk = request_dict.get('etk', None)
-            shadow_key = 'PUSH:DEVICE:SHADOW:{}'.format(etk)
-            device_etk = redis_obj.get_data(key=shadow_key)
-            if device_etk:
-                return JsonResponse(status=200,
-                                    data={'code': 0, 'msg': 'The same UID is requested once a day', 'data': {}})
-            redis_obj.set_data(key=shadow_key, val=1, expire=3600 * 24)
-            eto = ETkObject(etk)
-            uid = eto.uid
-            if not uid:
-                return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
-        except Exception:
-            return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
-
+        etk = request_dict.get('etk', None)
+        eto = ETkObject(etk)
+        uid = eto.uid
+        if not uid:
+            return JsonResponse(status=200, data={'code': 403, 'msg': 'error etk'})
         logger.info('使用配置: {}'.format(SERVER_TYPE))
         logger.info('data: {}'.format(request_dict.dict()))
 
@@ -207,4 +196,4 @@ def update_device_shadow(request):
             return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
     except Exception as e:
         logger.info('更新设备影子异常: {}'.format(repr(e)))
-        return JsonResponse(status=200, data={'code': 0, 'msg': 'success', 'data': {}})
+        return JsonResponse(status=500, data={'update_shadow_error': repr(e)})