| | |
| | | return None |
| | | |
| | | @classmethod |
| | | def release_client(cls, rid): |
| | | def release_client(cls, client_id): |
| | | sucess = False |
| | | if rid in cls.socket_client_lock_dict: |
| | | if client_id in cls.socket_client_lock_dict: |
| | | sucess = True |
| | | # 释放锁 |
| | | if cls.socket_client_lock_dict[rid].locked(): |
| | | cls.socket_client_lock_dict[rid].release() |
| | | if cls.socket_client_lock_dict[client_id].locked(): |
| | | cls.socket_client_lock_dict[client_id].release() |
| | | if sucess: |
| | | hx_logger_trade_debug.info(f"release_client success:{rid}") |
| | | hx_logger_trade_debug.info(f"release_client success:{client_id}") |
| | | else: |
| | | hx_logger_trade_debug.info(f"release_client fail:{rid}") |
| | | hx_logger_trade_debug.info(f"release_client fail:{client_id}") |
| | | |
| | | @classmethod |
| | | def del_client(cls, rid): |
| | |
| | | result = __request_response_dict.pop(request_id) |
| | | return result |
| | | if time.time() - start_time > timeout: |
| | | # 读取内容超时才会释放 |
| | | ClientSocketManager.release_client(client[0]) |
| | | raise Exception(f"读取内容超时: request_id={request_id}") |
| | | finally: |
| | | ClientSocketManager.release_client(client[0]) |
| | | pass |
| | | |
| | | return None |
| | | |
| | | |
| | | def set_response(client_id, request_id, response): |
| | | if client_id and request_id: |
| | | # 主动触发 |
| | | ClientSocketManager.release_client(client_id) |
| | | __request_response_dict[request_id] = response |
| | | ClientSocketManager.release_client(client_id) |
| | | else: |
| | | # 被动触发 |
| | | pass |