# 是否在禁止交易代码中 from db import redis_manager from db.redis_manager import RedisUtils from utils import tool __redis_manager = redis_manager.RedisManager(2) class WhiteListCodeManager: __redis_manager = redis_manager.RedisManager(2) @classmethod def __get_redis(cls): return cls.__redis_manager.getRedis() @classmethod def add_code(cls, code): RedisUtils.sadd(cls.__get_redis(), "white_list_codes", code) RedisUtils.expire(cls.__get_redis(), "white_list_codes", tool.get_expire()) @classmethod def remove_code(cls, code): RedisUtils.srem(cls.__get_redis(), "white_list_codes", code) @classmethod def is_in(cls, code): return RedisUtils.sismember(cls.__get_redis(), "white_list_codes", code) @classmethod def list_codes(cls): return RedisUtils.smembers(cls.__get_redis(), "white_list_codes") @classmethod def clear(cls): RedisUtils.delete(cls.__get_redis(), "white_list_codes") class BlackListCodeManager: __instance = None def __new__(cls, *args, **kwargs): if not cls.__instance: cls.__instance = super(BlackListCodeManager, cls).__new__(cls, *args, **kwargs) # 初始化设置 # 获取交易窗口的锁 cls.__instance.__redis_manager = redis_manager.RedisManager(2) cls.__instance.__forbidden_trade_codes_cache = RedisUtils.smembers(cls.__instance.__get_redis(), "forbidden-trade-codes") return cls.__instance def __get_redis(self): return self.__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 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 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")