feat: 增加上报线程池

This commit is contained in:
goodyhao
2025-05-13 15:54:00 +08:00
parent 91de372cbc
commit 885b7a0b05
+20 -6
View File
@@ -88,7 +88,8 @@ class ConnectionHandler:
self.audio_play_queue = queue.Queue() self.audio_play_queue = queue.Queue()
self.executor = ThreadPoolExecutor(max_workers=10) self.executor = ThreadPoolExecutor(max_workers=10)
# 上报线程 # 添加上报线程
self.report_thread_pool = ThreadPoolExecutor(max_workers=5, thread_name_prefix="report_worker")
self.report_queue = queue.Queue() self.report_queue = queue.Queue()
self.report_thread = None self.report_thread = None
# TODO(haotian): 2025/5/12 可以通过修改此处,调节asr的上报和tts的上报 # TODO(haotian): 2025/5/12 可以通过修改此处,调节asr的上报和tts的上报
@@ -944,13 +945,10 @@ class ConnectionHandler:
type, text, audio_data = item type, text, audio_data = item
try: try:
# 执行上报(传入二进制数据) # 提交任务到线程池
report(self, type, text, audio_data) self.report_thread_pool.submit(self._process_report, type, text, audio_data)
except Exception as e: except Exception as e:
self.logger.bind(tag=TAG).error(f"聊天记录上报线程异常: {e}") self.logger.bind(tag=TAG).error(f"聊天记录上报线程异常: {e}")
finally:
# 标记任务完成
self.report_queue.task_done()
except queue.Empty: except queue.Empty:
continue continue
except Exception as e: except Exception as e:
@@ -958,6 +956,17 @@ class ConnectionHandler:
self.logger.bind(tag=TAG).info("聊天记录上报线程已退出") self.logger.bind(tag=TAG).info("聊天记录上报线程已退出")
def _process_report(self, type, text, audio_data):
"""处理上报任务"""
try:
# 执行上报(传入二进制数据)
report(self, type, text, audio_data)
except Exception as e:
self.logger.bind(tag=TAG).error(f"上报处理异常: {e}")
finally:
# 标记任务完成
self.report_queue.task_done()
def speak_and_play(self, text, text_index=0): def speak_and_play(self, text, text_index=0):
if text is None or len(text) <= 0: if text is None or len(text) <= 0:
self.logger.bind(tag=TAG).info(f"无需tts转换,query为空,{text}") self.logger.bind(tag=TAG).info(f"无需tts转换,query为空,{text}")
@@ -1006,6 +1015,11 @@ class ConnectionHandler:
# 添加毒丸对象到上报队列确保线程退出 # 添加毒丸对象到上报队列确保线程退出
self.report_queue.put(None) self.report_queue.put(None)
# 关闭上报线程池
if hasattr(self, 'report_thread_pool'):
self.report_thread_pool.shutdown(wait=True)
self.logger.bind(tag=TAG).info("上报线程池已关闭")
# 清空任务队列 # 清空任务队列
self.clear_queues() self.clear_queues()