设备监控引擎
设备监控引擎(device monitor engine)主要用来执行周期性任务获取设备的运行信息,包括状态等。
操作系统启动后,每个设备都会自动生成一个 Prefect 作业,以进程形式运行。
设备监控引擎调用驱动
引擎层核心调用逻辑如下:
device_monitor_flow ->
init_driver() # 初始化驱动
redis.Redis() # 生成 Redis 实例
while True: # 周期性执行
driver.fetch_running_info() # 通过 driver 获取设备运行信息
redis_instance.publish() # 发布到 Redis
time.sleep(interval)
Device Manager 订阅 Redis
Device Manager 调用逻辑如下:
init_devices ->
loop devices.items() [ # 遍历设备列表
device.init_device() # 初始化设备
thread = threading.Thread( # 启动订阅线程
target=self.subscribe_device_info,
args=(self.redis_instance, device),
)
]
self.subscribe_device_info ->
redis_instance.pubsub() # 创建 Redis 实例
pubsub.subscribe(device.name)
pubsub.listen(): # 监听 Redis 消息
device_info = json.loads(message["data"])
status = device_info["status"]
device.set_status(status) # 更新设备信息