# 涨停时间管理器 """ 今日最高价管理 """ import json from db import redis_manager_delegate as redis_manager from db.redis_manager_delegate import RedisUtils from log_module import async_log_util from log_module.log import logger_debug from utils import global_util, tool class MaxPriceInfoManager: __max_price_info_cache = {} __db = 4 _redisManager = redis_manager.RedisManager(4) __instance = None def __new__(cls, *args, **kwargs): if not cls.__instance: cls.__instance = super(MaxPriceInfoManager, cls).__new__(cls, *args, **kwargs) cls.load_max_price_info() return cls.__instance @classmethod def load_max_price_info(cls): redis = cls._redisManager.getRedis() keys = RedisUtils.keys(redis, "max_price_info-*", auto_free=False) for key in keys: code = key.replace("max_price_info-", "") val = RedisUtils.get(redis, key, auto_free=False) if val: val = json.loads(val) cls.__max_price_info_cache[code] = val def set_price_info(self, code, price, time, sell1_info): """ 设置价格信息 @param sell1_info: 卖1信息:(卖1价, 卖1量) @param code: @param price: @param time: @return: """ old_price_info = self.__max_price_info_cache.get(code) if old_price_info and old_price_info[0] >= price: return price_info = (price, time, sell1_info) tool.CodeDataCacheUtil.set_cache(self.__max_price_info_cache, code, price_info) RedisUtils.setex_async( self.__db, "max_price_info-{}".format(code), tool.get_expire(), json.dumps(price_info)) async_log_util.info(logger_debug, f"最大现价:{code}-{price_info}") def get_price_info_cache(self, code): return self.__max_price_info_cache.get(code) if __name__ == "__main__": list = [("1234578", "09:00:03", None), ("12345", "09:00:01", True), ("123456", "09:00:00", True), ("123457", "09:00:04", False)]