Files
SupervisorAI/common/constants.py

57 lines
1.8 KiB
Python

import yaml
from utils.logger import get_logger
logger = get_logger(__name__)
MODEL_ROOT_PATH = 'YOLO_Weight'
ALERT_PUSH_URL = ""
HLS_ROOT_PATH = ""
HLS_SEGMENT_PATTERN = "segment_%09d.ts" # TS文件命名模式
# 默认告警推送间隔(秒)
ALERT_PUSH_INTERVAL = 5.0
# 各 action 的推送间隔配置 {action_code: interval_seconds}
ALERT_PUSH_INTERVALS = {}
# 视频剪辑配置
VIDEO_CLIP_OUTPUT_DIR = ""
VIDEO_CLIP_DURATION_SECONDS = 30
VIDEO_CLIP_RETENTION_SECONDS = 3600
VIDEO_CLIP_DEFAULT_SEGMENT_DURATION = 2
def init_config(config_path: str = "config.yaml"):
"""
从配置文件初始化全局配置
Args:
config_path: 配置文件路径,默认为 config.yaml
"""
global ALERT_PUSH_URL, HLS_ROOT_PATH
global VIDEO_CLIP_OUTPUT_DIR, VIDEO_CLIP_DURATION_SECONDS, VIDEO_CLIP_RETENTION_SECONDS, VIDEO_CLIP_DEFAULT_SEGMENT_DURATION
global ALERT_PUSH_INTERVALS
try:
with open(config_path, "r", encoding="utf-8") as f:
cfg = yaml.safe_load(f)
ALERT_PUSH_URL = cfg.get("alert_push_url", "")
# HLS_ROOT_PATH = cfg.get("hls_root_path", "")
# 视频剪辑配置
VIDEO_CLIP_OUTPUT_DIR = cfg.get("video_clip_output_dir", "")
VIDEO_CLIP_DURATION_SECONDS = cfg.get("video_clip_duration_seconds", 30)
VIDEO_CLIP_RETENTION_SECONDS = cfg.get("video_clip_retention_seconds", 3600)
VIDEO_CLIP_DEFAULT_SEGMENT_DURATION = cfg.get("video_clip_default_segment_duration", 2)
# 告警推送间隔配置
ALERT_PUSH_INTERVALS = cfg.get("alert_push_intervals", {})
logger.info(f"[INFO] Config initialized from {config_path}, alert_push_url={ALERT_PUSH_URL}")
except Exception as e:
logger.error(f"[ERROR] Failed to load config from {config_path}: {e}")