# 涨停时间管理器
|
"""
|
涨停时间管理器
|
"""
|
from db import redis_manager
|
from db.redis_manager import RedisUtils
|
from utils import global_util, tool
|
|
|
class LimitUpTimeManager:
|
__limit_up_time_cache = {}
|
__db = 0
|
_redisManager = redis_manager.RedisManager(0)
|
__instance = None
|
|
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 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)
|
|
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 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)]
|