From ae29833d08b7e1433093286dba99a3277a8298d9 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期五, 11 七月 2025 17:42:15 +0800 Subject: [PATCH] 测试 --- code_attribute/limit_up_time_manager.py | 67 +++++++++++++++++++++------------ 1 files changed, 42 insertions(+), 25 deletions(-) diff --git a/code_attribute/limit_up_time_manager.py b/code_attribute/limit_up_time_manager.py index bfc838e..d1d4879 100644 --- a/code_attribute/limit_up_time_manager.py +++ b/code_attribute/limit_up_time_manager.py @@ -2,40 +2,57 @@ """ 娑ㄥ仠鏃堕棿绠$悊鍣� """ -from db import redis_manager -from db.redis_manager import RedisUtils +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: - RedisUtils.setex( - _redisManager.getRedis(), "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: - time = RedisUtils.get(_redisManager.getRedis(), "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() - try: - keys = RedisUtils.keys(redis, "limit_up_time-*", auto_free=False) - for key in keys: - code = key.replace("limit_up_time-", "") - global_util.limit_up_time[code] = RedisUtils.get(redis, key, auto_free=False) - finally: - redis.connection_pool.disconnect() + 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__": -- Gitblit v1.8.0