启动增加debug模式,不后台启动子进程

This commit is contained in:
zqc
2026-02-26 16:36:55 +08:00
parent 55eef8e15e
commit 60db66c180
2 changed files with 32 additions and 1 deletions

View File

@@ -31,6 +31,9 @@ database:
echo: false echo: false
# 服务组配置:每个组有独立的 WebSocket 和算法类型 # 服务组配置:每个组有独立的 WebSocket 和算法类型
# debug_mode: True=前台运行适合PyCharm调试False=后台运行(适合生产部署)
debug_mode: true
service_groups: service_groups:
- name: "kadian_group" # 服务组名称 - name: "kadian_group" # 服务组名称
ws_host: "0.0.0.0" # WebSocket 服务地址 ws_host: "0.0.0.0" # WebSocket 服务地址

View File

@@ -22,6 +22,20 @@ logger = get_logger(__name__)
PID_DIR = "pids" PID_DIR = "pids"
def load_debug_mode(config_path: str = "config.yaml") -> bool:
"""从配置文件读取调试模式"""
try:
with open(config_path, "r", encoding="utf-8") as f:
cfg = yaml.safe_load(f)
return cfg.get("debug_mode", False)
except Exception:
return False
# 调试模式:从配置文件读取
DEBUG_MODE = load_debug_mode()
def load_service_groups_from_yaml(config_path: str = "config.yaml") -> List[dict]: def load_service_groups_from_yaml(config_path: str = "config.yaml") -> List[dict]:
"""从 YAML 文件加载服务组配置""" """从 YAML 文件加载服务组配置"""
with open(config_path, "r", encoding="utf-8") as f: with open(config_path, "r", encoding="utf-8") as f:
@@ -101,7 +115,12 @@ def start_rtsp_service(group: dict, script_path: str = "rtsp_service_ws_kadian.p
logger.info(f"[INFO] Starting service group '{group_name}': ws={ws_host}:{ws_port}, algorithm={algorithm}") logger.info(f"[INFO] Starting service group '{group_name}': ws={ws_host}:{ws_port}, algorithm={algorithm}")
# DEBUG_MODE=True 时前台运行方便调试False 时后台运行,适合部署
if DEBUG_MODE:
process = subprocess.Popen(cmd)
else:
process = subprocess.Popen(cmd, start_new_session=True) process = subprocess.Popen(cmd, start_new_session=True)
return process, group_name return process, group_name
@@ -119,6 +138,7 @@ def start_service():
# 2. 启动每个服务组 # 2. 启动每个服务组
started_count = 0 started_count = 0
processes = [] # 记录所有子进程,用于调试模式下等待
for group in service_groups: for group in service_groups:
group_name = group.get("name", "default") group_name = group.get("name", "default")
@@ -133,11 +153,19 @@ def start_service():
time.sleep(0.5) time.sleep(0.5)
save_pid(process.pid, name) save_pid(process.pid, name)
logger.info(f"[INFO] Service group '{name}' started with PID {process.pid}") logger.info(f"[INFO] Service group '{name}' started with PID {process.pid}")
processes.append((process, name))
started_count += 1 started_count += 1
except Exception as e: except Exception as e:
logger.error(f"[ERROR] Failed to start service group '{group_name}': {e}") logger.error(f"[ERROR] Failed to start service group '{group_name}': {e}")
logger.info(f"[INFO] Started {started_count}/{len(service_groups)} service groups") logger.info(f"[INFO] Started {started_count}/{len(service_groups)} service groups")
# DEBUG_MODE=True 时,主进程等待所有子进程
if DEBUG_MODE and processes:
logger.info("[DEBUG] Running in foreground mode, waiting for child processes...")
for process, name in processes:
process.wait()
return started_count > 0 return started_count > 0