Administrator
2023-03-17 8b848e8a9fa242b39f92f3a28faf89be10a6e456
gpcode_manager.py
@@ -11,6 +11,8 @@
import tool
import decimal
from ths import l2_listen_pos_health_manager
__redisManager = redis_manager.RedisManager(0)
@@ -80,7 +82,7 @@
        return val.get(name)
    @classmethod
    def add_first_code_name(cls, code,name):
    def add_first_code_name(cls, code, name):
        val = cls.__get_redis().get("gp_list_names_first")
        if not val:
            return None
@@ -153,6 +155,36 @@
            return True
        else:
            return False
# 想要买的代码
class WantBuyCodesManager:
    redisManager = redis_manager.RedisManager(0)
    __redis_key = "want_buy_codes"
    @classmethod
    def __get_redis(cls):
        return cls.redisManager.getRedis()
    @classmethod
    def clear(cls):
        cls.__get_redis().delete(cls.__redis_key)
    @classmethod
    def add_code(cls, code):
        cls.__get_redis().sadd(cls.__redis_key, code)
    @classmethod
    def remove_code(cls, code):
        cls.__get_redis().srem(cls.__redis_key, code)
    @classmethod
    def is_in(cls, code):
        return cls.__get_redis().sismember(cls.__redis_key, code)
    @classmethod
    def list_code(cls):
        return cls.__get_redis().smembers(cls.__redis_key)
def __parse_codes_data(code_datas):
@@ -480,12 +512,13 @@
        client_ids = client_manager.getValidL2Clients()
    else:
        client_ids.append(client_id)
    random.shuffle(client_ids)
    # random.shuffle(client_ids)
    available_positions = []
    for client_id in client_ids:
        redis_instance = __redisManager.getRedis()
        k = "listen_code-{}-*".format(client_id)
        keys = redis_instance.keys(k)
        random.shuffle(keys)
        # random.shuffle(keys)
        codes = []
        for key in keys:
            index = key.split("-")[-1]
@@ -493,10 +526,9 @@
                continue
            result = redis_instance.get(key)
            if result is None or len(result) == 0:
                return client_id, int(key.replace("listen_code-{}-".format(client_id), ""))
                available_positions.append((client_id, int(key.replace("listen_code-{}-".format(client_id), ""))))
            else:
                codes.append((key, result))
        # 查询是否有重复的代码
        codes_set = set()
        count = 0
@@ -505,6 +537,15 @@
            codes_set.add(code[1])
            if len(codes_set) < count:
                return client_id, int(code[0].replace("listen_code-{}-".format(client_id), ""))
    if available_positions:
        # 获取健康状态
        available_positions_health_states = l2_listen_pos_health_manager.list_health_state(available_positions)
        available_positions.sort(key=lambda x: available_positions_health_states[x], reverse=True)
        # 取第1个数据
        return available_positions[0][0], available_positions[0][1]
    return None, None
@@ -591,6 +632,4 @@
if __name__ == '__main__':
    print(get_free_listen_pos_count())
    print(get_name_code("华脉科技"))
    print(get_name_codes())
    print(get_can_listen_pos())