# 是否在禁止交易代码中 from db import redis_manager as redis_manager from db.redis_manager import RedisUtils from utils import tool __redis_manager = redis_manager.RedisManager(2) class WhiteListCodeManager: __instance = None __redis_manager = redis_manager.RedisManager(2) def __new__(cls, *args, **kwargs): if not cls.__instance: cls.__instance = super(WhiteListCodeManager, cls).__new__(cls, *args, **kwargs) # 初始化设置 # 获取交易窗口的锁 cls.__instance.__white_codes_cache = RedisUtils.smembers(cls.__get_redis(), "white_list_codes") return cls.__instance @classmethod def __get_redis(cls): return cls.__redis_manager.getRedis() def sync(self): data = RedisUtils.smembers(self.__get_redis(), "white_list_codes") self.__white_codes_cache.clear() if data: self.__white_codes_cache |= data def add_code(self, code): self.__white_codes_cache.add(code) RedisUtils.sadd(self.__get_redis(), "white_list_codes", code) RedisUtils.expire(self.__get_redis(), "white_list_codes", tool.get_expire()) def remove_code(self, code): self.__white_codes_cache.discard(code) RedisUtils.srem(self.__get_redis(), "white_list_codes", code) def is_in(self, code): return RedisUtils.sismember(self.__get_redis(), "white_list_codes", code) def is_in_cache(self, code): return code in self.__white_codes_cache def list_codes(self): return RedisUtils.smembers(self.__get_redis(), "white_list_codes") def list_codes_cache(self): return self.__white_codes_cache def clear(self): self.__white_codes_cache.clear() RedisUtils.delete(self.__get_redis(), "white_list_codes") class BlackListCodeManager: __instance = None __redis_manager = redis_manager.RedisManager(2) def __new__(cls, *args, **kwargs): if not cls.__instance: cls.__instance = super(BlackListCodeManager, cls).__new__(cls, *args, **kwargs) # 初始化设置 # 获取交易窗口的锁 cls.__instance.__forbidden_trade_codes_cache = RedisUtils.smembers(cls.__get_redis(), "forbidden-trade-codes") return cls.__instance @classmethod def __get_redis(cls): return cls.__redis_manager.getRedis() def add_code(self, code): self.__forbidden_trade_codes_cache.add(code) RedisUtils.sadd(self.__get_redis(), "forbidden-trade-codes", code) RedisUtils.expire(self.__get_redis(), "forbidden-trade-codes", tool.get_expire()) def sync(self): data = RedisUtils.smembers(self.__get_redis(), "forbidden-trade-codes") self.__forbidden_trade_codes_cache.clear() if data: self.__forbidden_trade_codes_cache |= data def remove_code(self, code): self.__forbidden_trade_codes_cache.discard(code) RedisUtils.srem(self.__get_redis(), "forbidden-trade-codes", code) def is_in(self, code): return RedisUtils.sismember(self.__get_redis(), "forbidden-trade-codes", code) def is_in_cache(self, code): return code in self.__forbidden_trade_codes_cache def list_codes(self): codes = RedisUtils.smembers(self.__get_redis(), "forbidden-trade-codes") self.__forbidden_trade_codes_cache = codes return codes def list_codes_cache(self): return self.__forbidden_trade_codes_cache def clear(self): self.__forbidden_trade_codes_cache.clear() RedisUtils.delete(self.__get_redis(), "forbidden-trade-codes") # 初始化禁止交易代码库 def init_forbidden_trade_codes(): BlackListCodeManager().clear() BlackListCodeManager().add_code("000000") # 移除禁止交易代码 def remove_from_forbidden_trade_codes(code): BlackListCodeManager().remove_code(code) # 添加代码到禁止交易 def add_to_forbidden_trade_codes(code): BlackListCodeManager().add_code(code) # 禁止代码交易 def forbidden_trade(code): add_to_forbidden_trade_codes(code) # l2_data_manager.remove_from_l2_fixed_codes(code) # l2_code_operate.L2CodeOperate.get_instance().remove_l2_listen(code, "禁止代码交易") def is_in_forbidden_trade_codes(code): return BlackListCodeManager().is_in_cache(code) if __name__ == "__main__": # add_to_forbidden_trade_codes("000977") WhiteListCodeManager().add_code("002977")