| | |
| | | |
| | | |
| | | class BlackListCodeManager: |
| | | __redis_manager = redis_manager.RedisManager(2) |
| | | __forbidden_trade_codes_cache = set() |
| | | __instance = None |
| | | |
| | | @classmethod |
| | | def __get_redis(cls): |
| | | return cls.__redis_manager.getRedis() |
| | | 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") |
| | | |
| | | @classmethod |
| | | def add_code(cls, code): |
| | | cls.__forbidden_trade_codes_cache.add(code) |
| | | RedisUtils.sadd(cls.__get_redis(), "forbidden-trade-codes", code) |
| | | RedisUtils.expire(cls.__get_redis(), "forbidden-trade-codes", tool.get_expire()) |
| | | return cls.__instance |
| | | |
| | | @classmethod |
| | | def remove_code(cls, code): |
| | | cls.__forbidden_trade_codes_cache.discard(code) |
| | | RedisUtils.srem(cls.__get_redis(), "forbidden-trade-codes", code) |
| | | def __get_redis(self): |
| | | return self.__redis_manager.getRedis() |
| | | |
| | | @classmethod |
| | | def is_in(cls, code): |
| | | return RedisUtils.sismember(cls.__get_redis(), "forbidden-trade-codes", code) |
| | | 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()) |
| | | |
| | | @classmethod |
| | | def is_in_cache(cls, code): |
| | | return code in cls.__forbidden_trade_codes_cache |
| | | def remove_code(self, code): |
| | | self.__forbidden_trade_codes_cache.discard(code) |
| | | RedisUtils.srem(self.__get_redis(), "forbidden-trade-codes", code) |
| | | |
| | | @classmethod |
| | | def list_codes(cls): |
| | | codes = RedisUtils.smembers(cls.__get_redis(), "forbidden-trade-codes") |
| | | cls.__forbidden_trade_codes_cache = codes |
| | | 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 |
| | | |
| | | @classmethod |
| | | def clear(cls): |
| | | cls.__forbidden_trade_codes_cache.clear() |
| | | RedisUtils.delete(cls.__get_redis(), "forbidden-trade-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") |
| | | BlackListCodeManager().clear() |
| | | BlackListCodeManager().add_code("000000") |
| | | |
| | | |
| | | # 移除禁止交易代码 |
| | | def remove_from_forbidden_trade_codes(code): |
| | | BlackListCodeManager.remove_code(code) |
| | | BlackListCodeManager().remove_code(code) |
| | | |
| | | |
| | | # 添加代码到禁止交易 |
| | | def add_to_forbidden_trade_codes(code): |
| | | BlackListCodeManager.add_code(code) |
| | | BlackListCodeManager().add_code(code) |
| | | |
| | | |
| | | # 禁止代码交易 |
| | |
| | | |
| | | |
| | | def is_in_forbidden_trade_codes(code): |
| | | return BlackListCodeManager.is_in_cache(code) |
| | | return BlackListCodeManager().is_in_cache(code) |
| | | |
| | | |
| | | if __name__ == "__main__": |