Browse Source

切片存储推送消息

chenjunkai 5 years ago
parent
commit
95fbabf5c6
2 changed files with 30 additions and 12 deletions
  1. 17 2
      Ansjer/test/kbt.py
  2. 13 10
      Controller/SysMsg.py

+ 17 - 2
Ansjer/test/kbt.py

@@ -1,2 +1,17 @@
-for i in range(5):
-    print(i)
+import datetime
+
+starttime = datetime.datetime.now()
+# long running
+# do something other
+lls = []
+i = 0
+for i in range(300000):
+    lls.append(i)
+    # if len(lls) > 1000:
+    #        lls = []
+    i = i + 1
+    if i > 1000:
+        lls = []
+        i = 0
+endtime = datetime.datetime.now()
+print((endtime - starttime))

+ 13 - 10
Controller/SysMsg.py

@@ -69,9 +69,10 @@ class SysMsgView(View):
             if sender:
                 smss_qs.filter(sender__username=sender)
             count = smss_qs.count()
-            smss_qs = smss_qs.values('id', 'sender__username', 'addTime', 'updTime', 'lang', 'recever', 'msg','platform')
+            smss_qs = smss_qs.values('id', 'sender__username', 'addTime', 'updTime', 'lang', 'recever', 'msg',
+                                     'platform')
             smss_qs = smss_qs[(page - 1) * line:page * line]
-            return response.json(0, {'count':count,'datas':list(smss_qs)})
+            return response.json(0, {'count': count, 'datas': list(smss_qs)})
         else:
             return response.json(404)
 
@@ -91,7 +92,7 @@ class SysMsgView(View):
             if region:
                 ue_filter = ue_filter.filter(region__in=region)
             ue_count = ue_filter.count()
-            range_count = math.ceil(ue_count / 5000)
+            # range_count = math.ceil(ue_count / 5000)
             SysMassModel.objects.create(
                 sender_id=userID,
                 lang=region_str,
@@ -101,13 +102,15 @@ class SysMsgView(View):
                 updTime=nowTime,
                 platform=platform
             )
-            for i in range(range_count):
-                querysetlist = []
-                userID_list = ue_filter.values_list('userID_id', flat=True)
-                # userID_list = ue_filter.values_list('userID_id', flat=True)[i*5000,(i+1)*5000]
-                for urd in userID_list:
-                    querysetlist.append(SysMsgModel(userID_id=urd, msg=msg, addTime=nowTime, updTime=nowTime))
-                SysMsgModel.objects.bulk_create(querysetlist)
+            querysetlist = []
+            userID_list = ue_filter.values_list('userID_id', flat=True)
+            for urd in userID_list:
+                querysetlist.append(SysMsgModel(userID_id=urd, msg=msg, addTime=nowTime, updTime=nowTime))
+                if len(querysetlist) > 3:
+                    SysMsgModel.objects.bulk_create(querysetlist)
+                    querysetlist = []
+            SysMsgModel.objects.bulk_create(querysetlist)
+
             return response.json(0)
         else:
             return response.json(404)