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

Merge remote-tracking branch 'origin/master'

locky 2 жил өмнө
parent
commit
4eb605fe67

+ 1 - 1
AdminController/DeviceManagementController.py

@@ -478,7 +478,7 @@ class DeviceManagement(View):
         version_number = request_dict.get('versionNumber', None)
         if not all([lang, app_bundle_id, version_number]):
             return response.json(444)
-        if lang != 'cn':
+        if lang != 'cn' and lang != 'cn_tw':
             lang = 'en'
         if version_number >= '2.6.2.1':  # 判断是否低于2.6.2.1版本
             return self.newAppVersion(response, app_bundle_id, lang, version_number)  # 获取2.6.2.1及以上版本设备信息图标

+ 26 - 31
Controller/Cron/CronTaskController.py

@@ -319,62 +319,57 @@ class CronUpdateDataView(View):
     @classmethod
     def reqUpdateSerialStatus(cls, response):
         redis_obj = RedisObject()
+        logger = logging.getLogger('info')
         # 更新已使用序列号其他服务器的状态
-        used_serial_redis_list_len = redis_obj.llen(USED_SERIAL_REDIS_LIST)
-        if used_serial_redis_list_len > 0:
-            used_serial_redis_list = []
-            for i in range(used_serial_redis_list_len):
-                used_serial_redis_list.append(redis_obj.lpop(USED_SERIAL_REDIS_LIST))
-            request_thread = threading.Thread(target=cls.do_request_thread, args=(str(used_serial_redis_list), 3))
-            request_thread.start()
+        used_serial_redis_list = redis_obj.lrange(USED_SERIAL_REDIS_LIST, 0, -1)  # 读取redis已使用序列号
+        logger.info('---请求更新序列号接口---used_serial_redis_list:{}---status:{}'.format(used_serial_redis_list, 3))
+        if used_serial_redis_list:
+            used_serial_redis_list = [str(i, 'utf-8') for i in used_serial_redis_list]
+            cls.do_request_function(used_serial_redis_list, 3)
         # 更新未使用序列号其他服务器的状态
-        unused_serial_redis_list_len = redis_obj.llen(UNUSED_SERIAL_REDIS_LIST)
-        if unused_serial_redis_list_len > 0:
-            unused_serial_redis_list = []
-            for i in range(unused_serial_redis_list_len):
-                unused_serial_redis_list.append(redis_obj.lpop(UNUSED_SERIAL_REDIS_LIST))
-            request_thread = threading.Thread(target=cls.do_request_thread, args=(str(unused_serial_redis_list), 1))
-            request_thread.start()
+        unused_serial_redis_list = redis_obj.lrange(UNUSED_SERIAL_REDIS_LIST, 0, -1)  # 读取redis未使用序列号
+        logger.info('---请求更新序列号接口---unused_serial_redis_list:{}---status:{}'.format(unused_serial_redis_list, 1))
+        if unused_serial_redis_list:
+            unused_serial_redis_list = [str(i, 'utf-8') for i in unused_serial_redis_list]
+            cls.do_request_function(unused_serial_redis_list, 1)
         return response.json(0)
 
     @staticmethod
-    def do_request_thread(serial_redis_list, status):
+    def do_request_function(serial_redis_list, status):
         """
         请求更新序列号线程
         @param serial_redis_list: 序列号redis列表
         @param status: 状态, 1: 未使用, 3: 已占用
         """
         data = {
-            'serial_redis_list': serial_redis_list,
+            'serial_redis_list': str(serial_redis_list),
             'status': status
         }
-        serial_redis_list = eval(serial_redis_list)
         # 确认域名列表
         orders_domain_name_list = CommonService.get_orders_domain_name_list()
         redis_obj = RedisObject()
         logger = logging.getLogger('info')
         logger.info('---请求更新序列号线程---data:{},orders_domain_name_list:{}'.format(data, orders_domain_name_list))
         try:
+            flag = 0  # 请求标志位
             for domain_name in orders_domain_name_list:
                 url = '{}cron/update/updateSerialStatus'.format(domain_name)
-                response = requests.post(url=url, data=data, timeout=2)
+                response = requests.post(url=url, data=data, timeout=5)
+                logger.info('---请求更新序列号响应时间---time:{}'.format(response.elapsed.total_seconds()))
                 result = response.json()
-                if result['result_code'] != 0:
-                    if status == 1:
-                        for item in serial_redis_list:
-                            redis_obj.rpush(UNUSED_SERIAL_REDIS_LIST, item)
-                    elif status == 3:
-                        for item in serial_redis_list:
-                            redis_obj.rpush(USED_SERIAL_REDIS_LIST, item)
+                if result['result_code'] != 0:  # 请求失败修改标志位
+                    flag = 1
                     break
+            if flag == 0:  # 请求成功删除redis序列号
+                if status == 1:
+                    for i in serial_redis_list:
+                        redis_obj.lrem(UNUSED_SERIAL_REDIS_LIST, 0, i)
+                elif status == 3:
+                    for i in serial_redis_list:
+                        redis_obj.lrem(USED_SERIAL_REDIS_LIST, 0, i)
         except Exception as e:
             logger.info('---更新序列号状态异常---:{}'.format(repr(e)))
-            if status == 1:
-                for item in serial_redis_list:
-                    redis_obj.rpush(UNUSED_SERIAL_REDIS_LIST, item)
-            elif status == 3:
-                for item in serial_redis_list:
-                    redis_obj.rpush(USED_SERIAL_REDIS_LIST, item)
+
 
     @staticmethod
     def updateSerialStatus(request_dict, response):

+ 8 - 0
Object/RedisObject.py

@@ -85,6 +85,14 @@ class RedisObject:
     def lrange(self, name, start, end):
         return self.CONN.lrange(name, start, end)
 
+    # 删除列表指定数据
+    def lrem(self, name, num, value):
+        """
+        num:列表方向,删除个数(0:所有)
+        value:删除的值
+        """
+        return self.CONN.lrem(name, num, value)
+
     def get_ttl(self, key):
         ttl = self.CONN.ttl(key)
         if ttl: