AI实验室后端

This commit is contained in:
BBIT-Kai
2026-02-04 13:58:18 +08:00
parent f9536dd0b4
commit 646e312a4c
24 changed files with 962 additions and 86 deletions
+37 -13
View File
@@ -1,3 +1,5 @@
import json
import redis
@@ -5,7 +7,7 @@ import redis
class RedisClient:
def __init__(self, config_path="config.yaml"):
def __init__(self):
self.redis = redis.Redis(
"10.10.12.101",
6379,
@@ -13,17 +15,14 @@ class RedisClient:
decode_responses=True,
)
def set_online(self, device_id: str):
key = f"device:online:{device_id}"
self.redis.set(key, 1)
def set_offline(self, device_id: str):
key = f"device:online:{device_id}"
self.redis.delete(key)
def is_device_online(self, device_id: str) -> bool:
key = f"device:online:{device_id}"
return self.redis.exists(key) == 1
# 已废弃 之前使用webhookds的方式通知 但是因为通知不及时的原因,现在在线状态全盘交给device status
# def set_online(self, device_id: str):
# key = f"device:online:{device_id}"
# self.redis.set(key, 1)
#
# def set_offline(self, device_id: str):
# key = f"device:online:{device_id}"
# self.redis.delete(key)
def set_device_info(self, device_id: str, info: dict):
"""
@@ -41,7 +40,32 @@ class RedisClient:
def get_device_info(self, device_id: str) -> dict:
key = f"device:info:{device_id}"
return self.redis.hgetall(key)
raw_info = self.redis.hgetall(key)
return raw_info
def get_value(self, key: str):
"""
获取 Redis 中的值,如果是 JSON 字符串自动解析为 dict
"""
value = self.redis.get(key)
if not value:
return None
try:
return json.loads(value)
except json.JSONDecodeError:
return value
def set_value(self, key: str, value, expire: int = None):
"""
存储 key-valuevalue 可以是 dict,自动序列化为 JSON
expire 单位秒
"""
if isinstance(value, (dict, list)):
value = json.dumps(value)
if expire:
self.redis.set(key, value, ex=expire)
else:
self.redis.set(key, value)
redis_client = RedisClient()