modify: mqtt心跳转发

This commit is contained in:
2026-08-03 15:06:29 +08:00
parent 84addb71ff
commit e43c25f5dc
6 changed files with 296 additions and 4 deletions
+31 -1
View File
@@ -113,11 +113,38 @@ async def create_workers(session, config, count=1, worker_manager=None):
# 初始化视频流控制器
stream_manager = StreamManager(mediamtx_addr)
# 读取告警保留配置
alarm_retention_config = worker_config.get("alarm_retention", {}) if isinstance(config, dict) else {}
alarm_max = alarm_retention_config.get("max_records", 0)
# upload 根目录(用于清理告警关联视频)
upload_root_path = config.get("data_dir", "./data/uploads") if isinstance(config, dict) else "./data/uploads"
# 初始化外部 MQTT 转发客户端
mqtt_fwd_config = worker_config.get("mqtt_forward", {}) if isinstance(config, dict) else {}
mqtt_fwd_enabled = mqtt_fwd_config.get("enabled", False)
mqtt_fwd_client = None
if mqtt_fwd_enabled:
from .mqtt_forward import MQTTForwardClient
mqtt_fwd_uri = mqtt_fwd_config.get("uri", "")
mqtt_fwd_topic = mqtt_fwd_config.get("topic", "/board_ping")
if mqtt_fwd_uri:
mqtt_fwd_client = MQTTForwardClient(uri=mqtt_fwd_uri, topic=mqtt_fwd_topic)
try:
await mqtt_fwd_client.start()
logger.info(f"[MQTTForward] 外部转发已启用: {mqtt_fwd_uri} → {mqtt_fwd_topic}")
except Exception as e:
logger.warning(f"[MQTTForward] 启动失败,将跳过转发: {e}")
mqtt_fwd_client = None
set_global_var("db", db)
set_global_var("heartbeat_timeout", hb_timeout)
set_global_var("heartbeat_interval", hb_interval)
set_global_var("stream_manager", stream_manager)
set_global_var("link_path", link_path)
set_global_var("mqtt_forward", mqtt_fwd_client)
set_global_var("upload_root", upload_root_path)
set_global_var("alarm_max_records", alarm_max)
logger.info(
f"[aibox_sophon_adapter] 已初始化: "
@@ -138,7 +165,7 @@ async def cleanup(worker_item: str):
在 Worker 关闭时调用,关闭数据库连接和后台任务。
"""
from .global_var import db, stream_manager
from .global_var import db, stream_manager, mqtt_forward
global _offline_check_task
if _offline_check_task is not None and not _offline_check_task.done():
@@ -155,4 +182,7 @@ async def cleanup(worker_item: str):
if stream_manager is not None:
await stream_manager.stop_all()
if mqtt_forward is not None:
await mqtt_forward.stop()
logger.info(f"[aibox_sophon_adapter] {worker_item} 清理完毕")