Pārlūkot izejas kodu

异步同步数据

zhangdongming 2 gadi atpakaļ
vecāks
revīzija
f775e6213c
1 mainītis faili ar 11 papildinājumiem un 7 dzēšanām
  1. 11 7
      Controller/ShadowController.py

+ 11 - 7
Controller/ShadowController.py

@@ -18,7 +18,7 @@
 # 设备影子更新
 import logging
 import time
-
+import threading
 import requests
 from django.http import JsonResponse
 from ratelimit.decorators import ratelimit
@@ -58,7 +58,8 @@ def generate_utk(request):
 
 
 # 设备影子更新
-def update_device_shadow(request):
+@ratelimit(key='ip', rate='1/10s', block=True)
+def update_device_shadow(request, aws_s3_client=None):
     request.encoding = 'utf-8'
     if request.method == 'POST':
         request_dict = request.POST
@@ -75,11 +76,8 @@ def update_device_shadow(request):
             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)
-
+        asy = threading.Thread(target=async_data_save, args=(request_dict, request))
+        asy.start()
         nowTime = int(time.time())
 
         # 重置按钮
@@ -200,3 +198,9 @@ def update_device_shadow(request):
         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 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)