数据智能体¶
智能体的定义¶
初始化智能体的时候需指明对应ID,便于网站对不同ID进行特定分类以及确定显示位置。 ID可查看配置文件或是在网站中进行查看
智能体中有两个参数是用户可进行操作的,第一个是statuses,对应到智能体的状态列表;第二个是candidate_queue,对应为数据上传队列。
用户继承Data类对capture_data方法进行重写,其中需为循环堵塞捕获数据。
from wisemq.client import Data
class MyData(Data):
def capture_data(self):
while True:
try:
data = get_data() # 这里的get_data为用户自定义的方法
self.candidate_queue.put(data)
except Exception as e:
print(e)
智能体的状态¶
智能体的状态由Status类负责,其中包含ONLY_SHOW和SWITCH两种类型,前者仅支持数值的显示,后者为开关类型,用于调用客户端中用户自定义的回调函数。
from wisemq.client import Data, Status
def call_func_for_status_3():
print("Process for status 3...")
def call_func_for_status_4():
print("Process for status 4...")
class MyData(Data):
# 定义当前智能体状态
statuses = {
"status1": Status(value="test 1"), # status1: 仅显示数值
"status2": Status(value="test 2"), # status2: 仅显示数值
"status3": Status(Status.SWITCH, value=0, call_func=call_func_for_status_3), # status3: 开关类型,用户可通过界面控制客户端,处理回调函数为call_func_for_status_3
"status4": Status(Status.SWITCH, value=1, call_func=call_func_for_status_4), # status4: 开关类型,用户可通过界面控制客户端,处理回调函数为call_func_for_status_4
}
def capture_data(self):
while True:
try:
# 捕获数据
data = get_data() # 这里的get_data为用户自定义的方法
self.candidate_queue.put(data)
# 更新状态
self.set_status("status1", "update status1") # 更新status1数值为"update status1"
self.set_status("status2", "update status2")) # 更新status2数值为"update status2"
self.set_status("status3", 1)) # 更新status3为1
self.set_status("status3", 0)) # 更新status4为1
except Exception as e:
print(e)
智能体的实例化与提交¶
智能体实例化的时候需要传入用户在网站所申请Data的ID进行实例化,对应ID将被用于更多的分类展示或分类处理。 实例化后需要提交到会话,由会话负责维护接下来的数据上传与状态更新。
my_data = MyData(id="{{ Your Data ID}}")
session.commit(my_data)