Эх сурвалжийг харах

上传云存同时汇总数据

peng 2 жил өмнө
parent
commit
e6ebd51f9c

+ 14 - 1
Controller/CloudStorage.py

@@ -43,7 +43,7 @@ from Controller.CheckUserData import DataValid
 from Model.models import Device_Info, Order_Model, Store_Meal, VodHlsModel, OssCrdModel, UID_Bucket, StsCrdModel, \
     ExperienceContextModel, Pay_Type, CDKcontextModel, Device_User, SysMassModel, SysMsgModel, UidPushModel, \
     Unused_Uid_Meal, UIDMainUser, UserModel, PromotionRuleModel, VideoPlaybackTimeModel, CloudLogModel, CouponModel, \
-    VodBucketModel, UIDModel
+    VodBucketModel, UIDModel, VodHlsSummary
 from Object.AWS.S3Email import S3Email
 from Object.AliPayObject import AliPayObject
 from Object.AliSmsObject import AliSmsObject
@@ -589,6 +589,19 @@ class CloudStorageView(View):
                     fg=fg,
                     sec=sec,
                 )
+                end_time_stamp = datetime.datetime.fromtimestamp(int(end_time))
+                end_time_str = datetime.datetime(end_time_stamp.year, end_time_stamp.month, 1)
+                end_time_stamp = CommonService.str_to_timestamp(end_time_str.strftime('%Y-%m-%d %H:%M:%S'))
+                vod_hls_qs = VodHlsSummary.objects.filter(uid=UID, time=end_time_stamp)
+                if vod_hls_qs.exists():
+                    vod_hls = vod_hls_qs.first()
+                    vod_hls.upload_frequency += 1
+                    vod_hls.upload_duration += sec
+                    vod_hls.save()
+                else:
+                    VodHlsSummary.objects.create(uid=UID, time=end_time_stamp,
+                                                 upload_duration=sec, upload_frequency=1)
+
                 res = {'code': 0, 'msg': '存储成功'}
                 return HttpResponse(json.dumps(res, ensure_ascii=False),
                                     content_type="application/json,charset=utf-8")

+ 18 - 7
Controller/CloudVod.py

@@ -15,7 +15,7 @@ import json
 import math
 import time
 import urllib
-
+import datetime
 import boto3
 
 from Object.AliPayObject import AliPayObject
@@ -31,7 +31,8 @@ from django.views.generic.base import View
 
 from Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET, OSS_ROLE_ARN, SERVER_DOMAIN, PAYPAL_CRD, \
     SERVER_DOMAIN_SSL
-from Model.models import Device_Info, Order_Model, Store_Meal, VodHlsModel, OssCrdModel, UID_Bucket, StsCrdModel
+from Model.models import Device_Info, Order_Model, Store_Meal, VodHlsModel, OssCrdModel, UID_Bucket, StsCrdModel, \
+    VodHlsSummary
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.UidTokenObject import UidTokenObject
@@ -405,7 +406,7 @@ class CloudVodView(View):
                             "Effect": "Allow",
                             "Action": "s3:*",
                             "Resource": ["arn:aws:s3:::azvod1/{uid_channel}/*".
-                                             format(uid_channel=storage)]
+                                         format(uid_channel=storage)]
                         }
                     ]
                 }
@@ -430,7 +431,7 @@ class CloudVodView(View):
                     'ip': ip,
                 }
                 if sts_qs.exists():
-                    sts_qs.update(data=json.dumps(res,default=str), addTime=now_time)
+                    sts_qs.update(data=json.dumps(res, default=str), addTime=now_time)
                 else:
                     StsCrdModel.objects.create(uid=uid, channel=channel, data=json.dumps(res, default=str),
                                                addTime=now_time, type=1)
@@ -637,6 +638,18 @@ class CloudVodView(View):
         endTime = int(storeTime) + storeDay * 86400
         VodHlsModel.objects.create(uid=UID, channel=channel, time=storeTime,
                                    endTime=endTime, bucket_id=bucketID, sec=sec)
+        end_time_stamp = datetime.datetime.fromtimestamp(int(endTime))
+        end_time_str = datetime.datetime(end_time_stamp.year, end_time_stamp.month, 1)
+        end_time_stamp = CommonService.str_to_timestamp(end_time_str.strftime('%Y-%m-%d %H:%M:%S'))
+        vod_hls_qs = VodHlsSummary.objects.filter(uid=UID, time=end_time_stamp)
+        if vod_hls_qs.exists():
+            vod_hls = vod_hls_qs.first()
+            vod_hls.upload_frequency += 1
+            vod_hls.upload_duration += sec
+            vod_hls.save()
+        else:
+            VodHlsSummary.objects.create(uid=UID, time=end_time_stamp,
+                                         upload_duration=sec, upload_frequency=1)
         return response.json(0)
 
     def do_filter_playlist(self, request_dict, userID, response):
@@ -735,7 +748,7 @@ class CloudVodView(View):
 
                 url = "{SERVER_DOMAIN}web/paid2/fail.html".format(SERVER_DOMAIN=SERVER_DOMAIN)
 
-        if lang !='cn':
+        if lang != 'cn':
             status = 0
             url = "{SERVER_DOMAIN}web/paid2/en_fail.html".format(SERVER_DOMAIN=SERVER_DOMAIN)
 
@@ -892,8 +905,6 @@ class CloudVodView(View):
             return response.json(804)
 
 
-
-
 def deleteVodHls(request):
     response = ResponseObject()
     i = int(request.GET.get('i', 5))

+ 5 - 20
Controller/Cron/CronTaskController.py

@@ -110,26 +110,11 @@ class CronDelDataView(View):
     def delVodHls(response):
         nowTime = int(time.time())
         try:
-            with transaction.atomic():
-                month_ago_time = nowTime - 30 * 24 * 60 * 60  # 删除1个月前的数据
-                vod_hls_qs = VodHlsModel.objects.filter(endTime__lte=month_ago_time).order_by('endTime')
-                for vod_hls in vod_hls_qs:
-                    end_time = vod_hls.endTime
-                    end_time_str = datetime.datetime.fromtimestamp(int(end_time))
-                    this_month_start = datetime.datetime(end_time_str.year, end_time_str.month, 1)
-                    this_month_start_stamp = CommonService.str_to_timestamp(
-                        this_month_start.strftime('%Y-%m-%d %H:%M:%S'))
-                    vod_hls_summary_qs = VodHlsSummary.objects.filter(time=this_month_start_stamp,
-                                                                      uid=vod_hls.uid)
-                    if vod_hls_summary_qs.exists():
-                        vod_hls_summary = vod_hls_summary_qs.first()
-                        vod_hls_summary.upload_duration = vod_hls_summary.upload_duration + vod_hls.sec
-                        vod_hls_summary.upload_frequency = vod_hls_summary.upload_frequency + 1
-                        vod_hls_summary.save()
-                    else:
-                        VodHlsSummary.objects.create(time=this_month_start_stamp, uid=vod_hls.uid,
-                                                     upload_duration=vod_hls.sec, upload_frequency=1)
-                    vod_hls.delete()
+            cursor = connection.cursor()
+            month_ago_time = nowTime - 30 * 24 * 60 * 60  # 删除1个月前的数据
+            sql = 'DELETE FROM `vod_hls` WHERE endTime<{} LIMIT 50000'.format(month_ago_time)
+            cursor.execute(sql)
+            cursor.close()
             return response.json(0)
         except Exception as e:
             return response.json(500, repr(e))