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):