diff --git a/Html/apps/extension_ase/ase_client/client.py b/Html/apps/extension_ase/ase_client/client.py index 967c885..a8eed33 100644 --- a/Html/apps/extension_ase/ase_client/client.py +++ b/Html/apps/extension_ase/ase_client/client.py @@ -433,26 +433,37 @@ class HSAEngineClient(ASEngineClient): super().__init__(server_url, namespace, id) self.chatmanager = chatmanager def loadmarkdown(self, fmd, fmdp, fsp): - with self.chatmanager.app.app_context(): - now = time.time() - # 并行发送三个消息,获取事件对象和ack_id - event1, ack_id1 = self.send_text('markdown-in', fmd, self.id, wait_for_ack=True, return_event=True) - event2, ack_id2 = self.send_text('markdown-prompt-in', fmdp, self.id, wait_for_ack=True, return_event=True) - event3, ack_id3 = self.send_text('score-prompt-in', fsp, self.id, wait_for_ack=True, return_event=True) - self.chatmanager.app.logger.info(f"Load markdown time cost: {time.time() - now}") - now = time.time() - # 等待所有事件完成 - timeout = 5 # 超时时间 - success1 = event1.wait(timeout=timeout) - success2 = event2.wait(timeout=timeout) - success3 = event3.wait(timeout=timeout) - self.chatmanager.app.logger.info(f"Wait markdown time cost: {time.time() - now}") - now = time.time() - # 清理ACK事件 - if ack_id1 in self.ack_events: - del self.ack_events[ack_id1] - if ack_id2 in self.ack_events: - del self.ack_events[ack_id2] - if ack_id3 in self.ack_events: - del self.ack_events[ack_id3] - return success1 and success2 and success3 + # 保存app实例以便在回调中使用 + app = self.chatmanager.app + + def log_info(message): + """安全的日志记录函数,确保在任何线程中都能使用""" + try: + with app.app_context(): + app.logger.info(message) + except Exception as e: + print(f"Log error: {e}") + print(f"Message: {message}") + + now = time.time() + # 并行发送三个消息,获取事件对象和ack_id + event1, ack_id1 = self.send_text('markdown-in', fmd, self.id, wait_for_ack=True, return_event=True) + event2, ack_id2 = self.send_text('markdown-prompt-in', fmdp, self.id, wait_for_ack=True, return_event=True) + event3, ack_id3 = self.send_text('score-prompt-in', fsp, self.id, wait_for_ack=True, return_event=True) + log_info(f"Load markdown time cost: {time.time() - now}") + now = time.time() + # 等待所有事件完成 + timeout = 5 # 超时时间 + success1 = event1.wait(timeout=timeout) + success2 = event2.wait(timeout=timeout) + success3 = event3.wait(timeout=timeout) + log_info(f"Wait markdown time cost: {time.time() - now}") + now = time.time() + # 清理ACK事件 + if ack_id1 in self.ack_events: + del self.ack_events[ack_id1] + if ack_id2 in self.ack_events: + del self.ack_events[ack_id2] + if ack_id3 in self.ack_events: + del self.ack_events[ack_id3] + return success1 and success2 and success3