| | |
| | | print("读取操作队列", data, redis.llen("code_operate_queue")) |
| | | if data is not None: |
| | | data = json.loads(data) |
| | | logger_code_operate.info("读取操作队列:{}", data) |
| | | type, code = data["type"], data["code"] |
| | | |
| | | if type == 0: |
| | | # 是否在固定库 |
| | | if l2_data_manager.is_in_l2_fixed_codes(code): |
| | |
| | | logging.exception(e) |
| | | print("发送操作异常:", str(e)) |
| | | |
| | | def add_operate(self, type, code, client=None, pos=None): |
| | | def add_operate(self, type, code, msg="", client=None, pos=None): |
| | | redis = self.redis_manager_.getRedis() |
| | | print("add_operate", type, code) |
| | | redis.rpush("code_operate_queue", json.dumps({"type": type, "code": code, "client": client, "pos": pos})) |
| | | redis.rpush("code_operate_queue", |
| | | json.dumps({"type": type, "msg": msg, "code": code, "client": client, "pos": pos})) |
| | | |
| | | def repaire_operate(self, client, pos, code): |
| | | # 如果本来该位置代码为空则不用修复 |
| | |
| | | if code_ == "" or code_ is None: |
| | | return |
| | | logger_code_operate.info("客户端位置代码修复:client-{},pos-{},code-{}", client, pos, code) |
| | | |
| | | redis = self.redis_manager_.getRedis() |
| | | redis.rpush("code_operate_queue", json.dumps({"type": 2, "client": client, "pos": pos, "code": code})) |
| | | self.add_operate(2, code, "", client, pos) |
| | | |
| | | # 修复l2的数据错误 |
| | | def repaire_l2_data(self, code): |
| | |
| | | redis.rpush("code_operate_queue", json.dumps({"type": 3, "code": code, "client": client_id, "data": data})) |
| | | |
| | | # 移除监控 |
| | | def remove_l2_listen(self, code): |
| | | def remove_l2_listen(self, code, msg): |
| | | # 是否正在监听 |
| | | if gpcode_manager.is_listen(code): |
| | | self.add_operate(0, code) |
| | | self.add_operate(0, code, msg=msg) |
| | | |
| | | # 设置代码操作状态,服务器保存的代码是否与实际设置的代码保持一致 |
| | | @classmethod |
| | | def set_operate_code_state(cls, client_id, channel, state): |
| | | cls.getRedis().setex("code-operate_state-{}-{}".format(client_id, channel), tool.get_expire(), state) |
| | | cls.getRedis().setex("code-operate_state-{}-{}".format(client_id, channel), 10, state) |
| | | |
| | | def get_operate_code_state(self, client_id, channel): |
| | | value = self.getRedis().get("code-operate_state-{}-{}".format(client_id, channel)) |
| | |
| | | data = json.loads(result["data"]) |
| | | codes = data["data"] |
| | | result_list = {} |
| | | for d in codes: |
| | | result_list[d["index"]]=d["code"] |
| | | if codes is not None: |
| | | for d in codes: |
| | | result_list[d["index"]] = d["code"] |
| | | return result_list |
| | | else: |
| | | raise Exception("获取客户端监听代码出错") |
| | | raise Exception("获取客户端监听代码出错:{}".format(result)) |
| | | |
| | | |
| | | # 矫正客户端代码 |
| | |
| | | for index in range(0, 8): |
| | | code = gpcode_manager.get_listen_code_by_pos(client_id, index) |
| | | if code is not None and len(code) > 0 and index_codes.get(index) != code: |
| | | # 修复代码 |
| | | L2CodeOperate().repaire_operate(client_id, index, code) |
| | | # 交易时间才修复代码 |
| | | if tool.is_trade_time(): |
| | | L2CodeOperate().repaire_operate(client_id, index, code) |
| | | elif code is None or len(code) == 0 and index_codes.get(index) is not None: |
| | | # 删除前端代码位 |
| | | L2CodeOperate().add_operate(4, "", client_id, index) |
| | | # L2CodeOperate().add_operate(4, "", client_id, index) |
| | | pass |
| | | except Exception as e: |
| | | logger_code_operate.error("client:{} msg:{}".format(client_id, str(e))) |
| | | |