Browse Source

fix:too many connection

chenjunkai 6 years ago
parent
commit
b5b39a0670
4 changed files with 99 additions and 76 deletions
  1. 0 27
      Ansjer/test/util/spnsss.py
  2. 91 48
      Controller/EquipmentManager.py
  3. 3 1
      Object/ResponseObject.py
  4. 5 0
      Service/middleware.py

+ 0 - 27
Ansjer/test/util/spnsss.py

@@ -11,34 +11,7 @@
 @file: spnsss.py
 @Contact: chanjunkai@163.com
 """
-import json
-jsss="{\"cn\":\"中文\":\"en\":\"english\"}"
-res = json.loads()
-print(type(jsss))
 
-exit()
-
-
-from gcm import GCM
-
-gcm = GCM(API_KEY)
-data = {'param1': 'value1', 'param2': 'value2'}
-
-# Downstream message using JSON request
-reg_ids = ['token1', 'token2', 'token3']
-response = gcm.json_request(registration_ids=reg_ids, data=data)
-
-# Downstream message using JSON request with extra arguments
-res = gcm.json_request(
-    registration_ids=reg_ids, data=data,
-    collapse_key='uptoyou', delay_while_idle=True, time_to_live=3600
-)
-
-# Topic Messaging
-topic = 'topic name'
-gcm.send_topic_message(topic=topic, data=data)
-
-exit()
 import time
 import apns2
 from var_dump import var_dump

+ 91 - 48
Controller/EquipmentManager.py

@@ -64,59 +64,102 @@ def addNewUserEquipmentInterface(request):
     if tko.code != 0:
         return response.json(tko.code)
     userID = tko.userID
-    userIDValid = Device_User.objects.filter(userID=userID)
-    if userIDValid:
-        try:
-            try:
-                deviceData = json.loads(deviceContent)
-            except Exception as e:
-                return response.json(444, repr(e))
+
+    try:
+        deviceData = json.loads(deviceContent)
+        UID = deviceData.get('UID', None)
+        if not UID:
+            return response.json(444, 'content')
+        dValid = Device_Info.objects.filter(userID=userID, UID=UID)
+        if dValid:
+            return response.json(174)
+        else:
+            UID = deviceData.get('UID', '')
+            re_uid = re.compile(r'^[A-Za-z0-9]{20}$')
+            if re_uid.match(UID):
+                userDevice = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=userID,
+                                         **deviceData)
+                userDevice.save()
+
+                # is_bind = Device_Info.objects.filter(UID=UID, isShare=False)
+                # # 判断是否有已绑定用户
+                # if not is_bind.exists():
+                #     userDevice = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=userID,
+                #                              **deviceData)
+                #     userDevice.save()
+                # else:
+                #     # 分享添加
+                #     if 'isShare' in deviceData:
+                #         deviceData['isShare'] = True
+                #     else:
+                #         deviceData['isShare'] = True
+                #     bind_userID = is_bind[0].userID_id
+                #     userDevice = Device_Info(id=CommonService.getUserID(getUser=False),
+                #                              userID_id=userID,
+                #                              primaryUserID=bind_userID,
+                #                              primaryMaster=ModelService.get_user_name(bind_userID),
+                #                              **deviceData)
+                #     userDevice.save()
             else:
-                UID = deviceData.get('UID', None)
-                if not UID:
-                    return response.json(444, 'content')
-                dValid = Device_Info.objects.filter(userID=userID, UID=UID)
-                if dValid:
-                    return response.json(174)
-                else:
-                    UID = deviceData.get('UID', '')
-                    re_uid = re.compile(r'^[A-Za-z0-9]{20}$')
-                    if re_uid.match(UID):
-                        userDevice = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=userID,
-                                                 **deviceData)
-                        userDevice.save()
+                return response.json(444, 'UID')
+
+    except Exception as e:
+        errorInfo = traceback.format_exc()
+        print('添加设备错误: %s ' % errorInfo)
+        return response.json(178, repr(e))
+    else:
+        sqlDict = CommonService.qs_to_dict([userDevice])
+        return response.json(0, sqlDict)
 
-                        # is_bind = Device_Info.objects.filter(UID=UID, isShare=False)
-                        # # 判断是否有已绑定用户
-                        # if not is_bind.exists():
-                        #     userDevice = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=userID,
-                        #                              **deviceData)
-                        #     userDevice.save()
-                        # else:
-                        #     # 分享添加
-                        #     if 'isShare' in deviceData:
-                        #         deviceData['isShare'] = True
-                        #     else:
-                        #         deviceData['isShare'] = True
-                        #     bind_userID = is_bind[0].userID_id
-                        #     userDevice = Device_Info(id=CommonService.getUserID(getUser=False),
-                        #                              userID_id=userID,
-                        #                              primaryUserID=bind_userID,
-                        #                              primaryMaster=ModelService.get_user_name(bind_userID),
-                        #                              **deviceData)
-                        #     userDevice.save()
-                    else:
-                        return response.json(444, 'UID')
 
-        except Exception as e:
-            errorInfo = traceback.format_exc()
-            print('添加设备错误: %s ' % errorInfo)
-            return response.json(178, repr(e))
+@csrf_exempt
+def addInterface(request):
+    request.encoding = 'utf-8'
+    response = ResponseObject()
+    if request.method == 'POST':
+        request_dict = request.POST
+    elif request.method == 'GET':
+        request_dict = request.GET
+    else:
+        return response.json(444)
+    token = request_dict.get('token', None)
+    deviceContent = request_dict.get('content', None)
+    if not deviceContent:
+        return response.json(444, 'content')
+    tko = TokenObject(token)
+    response.lang = tko.lang
+    if tko.code != 0:
+        return response.json(tko.code)
+    userID = tko.userID
+    try:
+        deviceData = json.loads(deviceContent)
+        UID = deviceData.get('UID', None)
+        if not UID:
+            return response.json(444, 'content')
+        dValid = Device_Info.objects.filter(userID=userID, UID=UID)
+        if dValid:
+            return response.json(174)
         else:
-            sqlDict = CommonService.qs_to_dict([userDevice])
-            return response.json(0, sqlDict)
+            UID = deviceData.get('UID', '')
+            re_uid = re.compile(r'^[A-Za-z0-9]{20}$')
+            if re_uid.match(UID):
+                is_bind = Device_Info.objects.filter(UID=UID, isShare=False)
+                # 判断是否有已绑定用户
+                if not is_bind.exists():
+                    userDevice = Device_Info(id=CommonService.getUserID(getUser=False), userID_id=userID,
+                                             **deviceData)
+                    userDevice.save()
+                else:
+                    return response.json()
+            else:
+                return response.json(444, 'UID')
+    except Exception as e:
+        errorInfo = traceback.format_exc()
+        print('添加设备错误: %s ' % errorInfo)
+        return response.json(178, repr(e))
     else:
-        return response.json(104)
+        sqlDict = CommonService.qs_to_dict([userDevice])
+        return response.json(0, sqlDict)
 
 
 @csrf_exempt

+ 3 - 1
Object/ResponseObject.py

@@ -13,6 +13,7 @@ class ResponseObject(object):
             10: res,
             12: 'You are not the primary user of the device!',
             14: 'Device is not belong to you',
+            15: 'Device has been bound',
             44: 'System error! Can not send email',
             48: 'System object error!',
             89: 'Already send the code, please check it or get it again after 10m',
@@ -59,8 +60,9 @@ class ResponseObject(object):
             0: '成功',
             5: '请一分钟后再尝试',
             10: res,
-            12: '您不是设备主用户',
+            12: '设备主用户',
             14: '设备不属于您',
+            15: '设备已被绑定',
             44: '系统错误!无法发送电子邮件',
             48: '系统对象错误',
             89: '已发验证码,请检测或10分钟后重新获取。',

+ 5 - 0
Service/middleware.py

@@ -5,6 +5,10 @@ from django.utils.deprecation import MiddlewareMixin
 from Ansjer import local_settings as api_settings
 from Object.ResponseObject import ResponseObject
 from Service.MiscellService import MiscellService
+import django.db
+
+
+# 设置mysql超时
 
 
 class StatisticsUrlMiddleware(MiddlewareMixin):
@@ -82,5 +86,6 @@ class StatisticsUrlMiddleware(MiddlewareMixin):
                 # MiscellService.access_log(request=request, response=response, type=0)
             except Exception as e:
                 print(repr(e))
+            django.db.close_old_connections()
         return response