Quellcode durchsuchen

请求更新序列号状态重置美洲服的地区id

locky vor 2 Jahren
Ursprung
Commit
2519991565
1 geänderte Dateien mit 49 neuen und 10 gelöschten Zeilen
  1. 49 10
      Controller/Cron/CronTaskController.py

+ 49 - 10
Controller/Cron/CronTaskController.py

@@ -9,7 +9,6 @@
 # @Software: PyCharm
 import datetime
 import logging
-import threading
 import time
 
 import requests
@@ -17,11 +16,11 @@ from django.db import connection, connections, transaction
 from django.db.models import Q, Sum, Count
 from django.views import View
 
-from Ansjer.config import USED_SERIAL_REDIS_LIST, UNUSED_SERIAL_REDIS_LIST
+from Ansjer.config import USED_SERIAL_REDIS_LIST, UNUSED_SERIAL_REDIS_LIST, CONFIG_INFO, CONFIG_US
 from Model.models import Device_User, Device_Info, UidSetModel, UID_Bucket, Unused_Uid_Meal, Order_Model, StsCrdModel, \
     VodHlsModel, ExperienceContextModel, AiService, VodHlsSummary, VideoPlaybackTimeModel, DeviceUserSummary, \
     CountryModel, DeviceTypeModel, OrdersSummary, DeviceInfoSummary, CompanySerialModel, \
-    CloudLogModel, UidCloudStorageCount, UserExModel
+    CloudLogModel, UidCloudStorageCount, UserExModel, DeviceDomainRegionModel
 from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
 from Object.utils import LocalDateTimeUtil
@@ -234,6 +233,8 @@ class CronUpdateDataView(View):
             return self.reqUpdateSerialStatus(response)
         elif operation == 'updateSerialStatus':  # 更新序列号状态
             return self.updateSerialStatus(request_dict, response)
+        elif operation == 'reset-region-id':  # 重置地区id
+            return self.reset_region_id(request_dict, response)
         else:
             return response.json(404)
 
@@ -343,7 +344,7 @@ class CronUpdateDataView(View):
     @staticmethod
     def do_request_function(serial_redis_list, status):
         """
-        请求更新序列号线程
+        请求更新序列号状态
         @param serial_redis_list: 序列号redis列表
         @param status: 状态, 1: 未使用, 3: 已占用
         """
@@ -357,16 +358,34 @@ class CronUpdateDataView(View):
         logger = logging.getLogger('info')
         logger.info('---请求更新序列号线程---data:{},orders_domain_name_list:{}'.format(data, orders_domain_name_list))
         try:
-            flag = 0  # 请求标志位
+            requests_failed_flag = False  # 请求失败标志位
             for domain_name in orders_domain_name_list:
                 url = '{}cron/update/updateSerialStatus'.format(domain_name)
                 response = requests.post(url=url, data=data, timeout=5)
-                logger.info('---请求更新序列号响应时间---time:{}'.format(response.elapsed.total_seconds()))
+                logger.info('---请求更新序列号响应时间---:{}'.format(response.elapsed.total_seconds()))
                 result = response.json()
-                if result['result_code'] != 0:  # 请求失败修改标志位
-                    flag = 1
+                if result['result_code'] != 0:  # 请求失败标志位置位
+                    requests_failed_flag = True
                     break
-            if flag == 0:  # 请求成功删除redis序列号
+
+                # 状态为未使用,重置美洲服的地区id
+                if status == 1:     # 美洲服直接更新
+                    if CONFIG_INFO == CONFIG_US:
+                        DeviceDomainRegionModel.objects.filter(~Q(region_id=0), serial_number__in=serial_redis_list).\
+                            update(region_id=0)
+                    else:   # 其他服请求到美洲服更新
+                        req_url = 'https://www.dvema.com/cron/update/reset-region-id'
+                        req_data = {
+                            'serial_redis_list': str(serial_redis_list)
+                        }
+                        response = requests.post(url=req_url, data=req_data, timeout=5)
+                        logger.info('---请求重置地区id响应时间---:{}'.format(response.elapsed.total_seconds()))
+                        result = response.json()
+                        if result['result_code'] != 0:  # 请求失败标志位置位
+                            requests_failed_flag = True
+                            break
+
+            if not requests_failed_flag:  # 请求成功删除redis序列号
                 if status == 1:
                     for i in serial_redis_list:
                         redis_obj.lrem(UNUSED_SERIAL_REDIS_LIST, 0, i)
@@ -376,7 +395,6 @@ class CronUpdateDataView(View):
         except Exception as e:
             logger.info('---更新序列号状态异常---:{}'.format(repr(e)))
 
-
     @staticmethod
     def updateSerialStatus(request_dict, response):
         """
@@ -402,6 +420,27 @@ class CronUpdateDataView(View):
             logger.info('---更新序列号状态异常---:{}'.format(repr(e)))
             return response.json(500)
 
+    @staticmethod
+    def reset_region_id(request_dict, response):
+        """
+        重置地区id
+        @param request_dict: 请求参数
+        @request_dict serial_redis_list: 序列号redis列表
+        @param response: 响应对象
+        """
+        serial_redis_list = request_dict.get('serial_redis_list', None)
+        logger = logging.getLogger('info')
+        logger.info('---重置地区id参数---serial_redis_list:{}'.format(serial_redis_list))
+        if not serial_redis_list:
+            return response.json(444)
+        try:
+            serial_redis_list = eval(serial_redis_list)
+            DeviceDomainRegionModel.objects.filter(serial_number__in=serial_redis_list).update(region_id=0)
+            return response.json(0)
+        except Exception as e:
+            logger.info('---重置地区id异常---:{}'.format(repr(e)))
+            return response.json(500)
+
 
 class CronCollectDataView(View):
     def get(self, request, *args, **kwargs):