modify: mqtt心跳转发
This commit is contained in:
@@ -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} 清理完毕")
|
||||
|
||||
Reference in New Issue
Block a user