From 6abd3389f372dcc99209818b4f859ece49b8cd73 Mon Sep 17 00:00:00 2001 From: hz4th_coder Date: Fri, 17 Jul 2026 00:36:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=81=9C=E6=AD=A2=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E6=97=A0=E6=B3=95=E7=BB=88=E6=AD=A2=E6=97=A7=E4=BC=9A?= =?UTF-8?q?=E8=AF=9D=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改 stop_session 方法,支持停止数据库中的旧会话 - 服务重启后 active_sessions 为空,导致无法停止旧会话 - 现在会检查数据库并直接更新会话状态 - 修复 chatglm-3 等长时间运行会话无法停止的问题 --- services/process_monitor.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/services/process_monitor.py b/services/process_monitor.py index 1f26424..9e9a409 100644 --- a/services/process_monitor.py +++ b/services/process_monitor.py @@ -443,11 +443,27 @@ class ProcessMonitor: def stop_session(self, session_id): """停止会话""" + # 先尝试从内存中停止 if session_id in self.active_sessions: self.active_sessions[session_id]['stop'] = True self.active_sessions[session_id]['paused'] = False db.update_session_status(session_id, 'stopped') + logger.info(f"停止会话(内存): {session_id}") return True + + # 如果不在内存中,检查数据库并直接更新状态 + session = db.get_process_session(session_id) + if session: + # 只有运行中或暂停状态的会话才能停止 + if session.get('status') in ('running', 'paused', 'pending'): + db.update_session_status(session_id, 'stopped') + logger.info(f"停止会话(数据库): {session_id}") + return True + else: + logger.warning(f"会话状态为 {session.get('status')},无法停止") + return False + + logger.warning(f"会话不存在: {session_id}") return False def get_session_status(self, session_id):