From cbe19ea6066a600cbd0b5110db5d43f8252d14a8 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期四, 13 六月 2024 11:23:53 +0800
Subject: [PATCH] L撤成交进度相关改进

---
 code_attribute/limit_up_time_manager.py |   67 ++++++++++++++++++++++-----------
 1 files changed, 44 insertions(+), 23 deletions(-)

diff --git a/code_attribute/limit_up_time_manager.py b/code_attribute/limit_up_time_manager.py
index 7e72a56..d1d4879 100644
--- a/code_attribute/limit_up_time_manager.py
+++ b/code_attribute/limit_up_time_manager.py
@@ -2,38 +2,59 @@
 """
 娑ㄥ仠鏃堕棿绠$悊鍣�
 """
-from db import redis_manager
+from db import redis_manager_delegate as redis_manager
+from db.redis_manager_delegate import RedisUtils
 from utils import global_util, tool
 
-_redisManager = redis_manager.RedisManager(0)
 
+class LimitUpTimeManager:
+    __limit_up_time_cache = {}
+    __db = 0
+    _redisManager = redis_manager.RedisManager(0)
+    __instance = None
 
-def save_limit_up_time(code, time):
-    _time = get_limit_up_time(code)
-    if _time is None:
-        redis = _redisManager.getRedis()
-        redis.setex("limit_up_time-{}".format(code), tool.get_expire(), time)
-        global_util.limit_up_time[code] = time
+    def __new__(cls, *args, **kwargs):
+        if not cls.__instance:
+            cls.__instance = super(LimitUpTimeManager, cls).__new__(cls, *args, **kwargs)
+            cls.load_limit_up_time()
+        return cls.__instance
 
+    @classmethod
+    def load_limit_up_time(cls):
+        redis = cls._redisManager.getRedis()
+        try:
+            keys = RedisUtils.keys(redis, "limit_up_time-*", auto_free=False)
+            for key in keys:
+                code = key.replace("limit_up_time-", "")
+                time_ = RedisUtils.get(redis, key, auto_free=False)
+                global_util.limit_up_time[code] = time_
+                tool.CodeDataCacheUtil.set_cache(cls.__limit_up_time_cache, code, time_)
+        finally:
+            RedisUtils.realse(redis)
 
-def get_limit_up_time(code):
-    time = global_util.limit_up_time.get(code)
-    if time is None:
-        redis = _redisManager.getRedis()
-        time = redis.get("limit_up_time-{}".format(code))
-        if time is not None:
+    def save_limit_up_time(self, code, time):
+        cache_result = tool.CodeDataCacheUtil.get_cache(self.__limit_up_time_cache, code)
+        if not cache_result[0] or cache_result[1] is None:
             global_util.limit_up_time[code] = time
+            tool.CodeDataCacheUtil.set_cache(self.__limit_up_time_cache, code, time)
+            RedisUtils.setex_async(
+                self.__db, "limit_up_time-{}".format(code), tool.get_expire(), time)
 
-    return time
+    def get_limit_up_time(self, code):
+        time = global_util.limit_up_time.get(code)
+        if time is None:
+            time = RedisUtils.get(self._redisManager.getRedis(), "limit_up_time-{}".format(code))
+            if time is not None:
+                global_util.limit_up_time[code] = time
+        return time
 
-
-def load_limit_up_time():
-    redis = _redisManager.getRedis()
-    keys = redis.keys("limit_up_time-*")
-    for key in keys:
-        code = key.replace("limit_up_time-", "")
-        global_util.limit_up_time[code] = redis.get(key)
+    def get_limit_up_time_cache(self, code):
+        cache_result = tool.CodeDataCacheUtil.get_cache(self.__limit_up_time_cache, code)
+        if cache_result[0]:
+            return cache_result[1]
+        return None
 
 
 if __name__ == "__main__":
-    list = [("1234578", "09:00:03",None), ("12345", "09:00:01",True), ("123456", "09:00:00",True), ("123457", "09:00:04",False)]
\ No newline at end of file
+    list = [("1234578", "09:00:03", None), ("12345", "09:00:01", True), ("123456", "09:00:00", True),
+            ("123457", "09:00:04", False)]

--
Gitblit v1.8.0