启动增加debug模式,不后台启动子进程
This commit is contained in:
@@ -22,6 +22,20 @@ logger = get_logger(__name__)
|
||||
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]:
|
||||
"""从 YAML 文件加载服务组配置"""
|
||||
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}")
|
||||
|
||||
process = subprocess.Popen(cmd, start_new_session=True)
|
||||
# DEBUG_MODE=True 时前台运行,方便调试;False 时后台运行,适合部署
|
||||
if DEBUG_MODE:
|
||||
process = subprocess.Popen(cmd)
|
||||
else:
|
||||
process = subprocess.Popen(cmd, start_new_session=True)
|
||||
|
||||
return process, group_name
|
||||
|
||||
|
||||
@@ -119,6 +138,7 @@ def start_service():
|
||||
|
||||
# 2. 启动每个服务组
|
||||
started_count = 0
|
||||
processes = [] # 记录所有子进程,用于调试模式下等待
|
||||
for group in service_groups:
|
||||
group_name = group.get("name", "default")
|
||||
|
||||
@@ -133,11 +153,19 @@ def start_service():
|
||||
time.sleep(0.5)
|
||||
save_pid(process.pid, name)
|
||||
logger.info(f"[INFO] Service group '{name}' started with PID {process.pid}")
|
||||
processes.append((process, name))
|
||||
started_count += 1
|
||||
except Exception as 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")
|
||||
|
||||
# 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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user