From cbe19ea6066a600cbd0b5110db5d43f8252d14a8 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期四, 13 六月 2024 11:23:53 +0800 Subject: [PATCH] L撤成交进度相关改进 --- huaxin_client/code_queue_distribute_manager.py | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 55 insertions(+), 0 deletions(-) diff --git a/huaxin_client/code_queue_distribute_manager.py b/huaxin_client/code_queue_distribute_manager.py index 0e033ca..b91cbc6 100644 --- a/huaxin_client/code_queue_distribute_manager.py +++ b/huaxin_client/code_queue_distribute_manager.py @@ -1,6 +1,7 @@ """ 浠g爜闃熷垪绠$悊 """ +import copy class CodeQueueDistributeManager: @@ -43,3 +44,57 @@ # 鑾峰彇绌洪棽鐨勪綅缃暟閲� def get_free_queue_count(self): return len(self.queue_list) - len(self.distibuted_code_queue_dict.keys()) + + +# 鍥炶皟瀵硅薄鍒嗛厤 +class CodeDataCallbackDistributeManager: + # queue_list + def __init__(self, callback_list: list): + flist = [] + for callback in callback_list: + flist.append((id(callback), callback)) + self.callback_list = flist + self.distibuted_code_callback_dict = {} + + # 鑾峰彇鍙敤鐨勯槦鍒� + def get_available_callback(self): + distibuted_callbacks_ids = set() + for code in self.distibuted_code_callback_dict: + distibuted_callbacks_ids.add(self.distibuted_code_callback_dict[code][0]) + for callback in self.callback_list: + if callback[0] not in distibuted_callbacks_ids: + return callback + return None + + # 涓轰唬鐮佸垎閰嶉槦鍒� + def distribute_callback(self, code): + if code in self.distibuted_code_callback_dict: + return self.distibuted_code_callback_dict.get(code) + callback_info = self.get_available_callback() + if not callback_info: + raise Exception("鏃犲彲鐢ㄧ殑鍥炶皟瀵硅薄") + self.distibuted_code_callback_dict[code] = callback_info + return callback_info + + # 鑾峰彇浠g爜鍒嗛厤鐨勯槦鍒� + def get_distributed_callback(self, code): + if code in self.distibuted_code_callback_dict: + return self.distibuted_code_callback_dict.get(code)[1] + else: + return None + + def release_distribute_callback(self, code): + if code in self.distibuted_code_callback_dict: + self.distibuted_code_callback_dict.pop(code) + + # 鑾峰彇绌洪棽鐨勪綅缃暟閲� + def get_free_queue_count(self): + return len(self.callback_list) - len(self.distibuted_code_callback_dict.keys()) + + def get_distributed_codes(self): + """ + 鑾峰彇宸茬粡鍒嗛厤鐨勪唬鐮� + @return: + """ + codes = self.distibuted_code_callback_dict.keys() + return copy.deepcopy(codes) -- Gitblit v1.8.0