| | |
| | | """ |
| | | 涨停时间管理器 |
| | | """ |
| | | 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: |
| | | RedisUtils.realse(redis) |
| | | 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__": |