Administrator
2024-08-22 178d119f552136d7e119ddab50a01e7f5d642186
code_attribute/gpcode_manager.py
@@ -385,6 +385,62 @@
        RedisUtils.delete(self.__get_redis(), "forbidden-trade-codes")
class GreenListCodeManager:
    """
    绿名单:买入即加红,撤单不移红
    """
    __instance = None
    __db = 2
    __redis_manager = redis_manager.RedisManager(2)
    __codes_set = set()
    def __new__(cls, *args, **kwargs):
        if not cls.__instance:
            cls.__instance = super(GreenListCodeManager, cls).__new__(cls, *args, **kwargs)
            # 初始化设置
            # 获取交易窗口的锁
            cls.__codes_set = RedisUtils.smembers(cls.__get_redis(), "green-trade-codes")
        return cls.__instance
    @classmethod
    def __get_redis(cls):
        return cls.__redis_manager.getRedis()
    def add_code(self, code):
        self.__codes_set.add(code)
        RedisUtils.sadd_async(self.__db, "green-trade-codes", code)
        RedisUtils.expire_async(self.__db, "green-trade-codes", tool.get_expire())
    def sync(self):
        data = RedisUtils.smembers(self.__get_redis(),
                                   "green-trade-codes")
        self.__codes_set.clear()
        if data:
            self.__codes_set |= data
    def remove_code(self, code):
        self.__codes_set.discard(code)
        RedisUtils.srem(self.__get_redis(), "green-trade-codes", code)
    def is_in(self, code):
        return RedisUtils.sismember(self.__get_redis(), "green-trade-codes", code)
    def is_in_cache(self, code):
        return code in self.__codes_set
    def list_codes(self):
        codes = RedisUtils.smembers(self.__get_redis(), "green-trade-codes")
        self.__codes_set = codes
        return codes
    def list_codes_cache(self):
        return self.__codes_set
    def clear(self):
        self.__codes_set.clear()
        RedisUtils.delete(self.__get_redis(), "green-trade-codes")
def __parse_codes_data(code_datas):
    codes = []
    name_codes = {}