ソースを参照

优化序列号同步接口
增加redis列表删除指定值

peng 2 年 前
コミット
15aaea1beb
2 ファイル変更29 行追加30 行削除
  1. 21 30
      Controller/Cron/CronTaskController.py
  2. 8 0
      Object/RedisObject.py

+ 21 - 30
Controller/Cron/CronTaskController.py

@@ -326,24 +326,18 @@ class CronUpdateDataView(View):
     def reqUpdateSerialStatus(cls, response):
         redis_obj = RedisObject()
         # 更新已使用序列号其他服务器的状态
-        used_serial_redis_list_len = redis_obj.llen(USED_SERIAL_REDIS_LIST)
         logger = logging.getLogger('info')
-        logger.info('---请求更新序列号接口---used_serial_redis_len:{}'.format(used_serial_redis_list_len))
-        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)
+        logger.info('---请求更新序列号接口---used_serial_redis_list:{}'.format(used_serial_redis_list))
+        if used_serial_redis_list:
+            used_serial_redis_list = [str(i, 'utf-8') for i in used_serial_redis_list]
+            cls.do_request_thread(used_serial_redis_list, 3)
         # 更新未使用序列号其他服务器的状态
-        unused_serial_redis_list_len = redis_obj.llen(UNUSED_SERIAL_REDIS_LIST)
-        logger.info('---请求更新序列号接口---unused_serial_redis_len:{}'.format(unused_serial_redis_list_len))
-        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)
+        logger.info('---请求更新序列号接口---unused_serial_redis_list:{}'.format(unused_serial_redis_list))
+        if unused_serial_redis_list:
+            unused_serial_redis_list = [str(i, 'utf-8') for i in unused_serial_redis_list]
+            cls.do_request_thread(unused_serial_redis_list, 1)
         return response.json(0)
 
     @staticmethod
@@ -354,36 +348,33 @@ class CronUpdateDataView(View):
         @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)
                 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)
+                    flag = 1
                     break
+            if flag == 0:
+                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: