device_supervisor实现数据缓存一些时间的脚本示例
本实验是做的采集数据上传云平台保留原先的断点续传并且可以将数据暂存到路由器的存储里,暂时设置暂存3天,第5天文件创建会删除第一天的文件,脚本可以根据需要修改上传和修改机制。
查看生成的日志文件,
如有错误欢迎指出,欢迎交流!
#**********************************以下是脚本解析*********************************
#以下是写数据到网关的脚本:
name=datetime.datetime.now().strftime("%Y%m%d")#获取时间到天作为文件名
namedel=(datetime.datetime.now()+datetime.timedelta(days=-3)).strftime("%Y%m%d")#这个是要删除的时间到天,作为删除文件名也就是覆盖删除。(当前所用的删除机制是删除前边的整个文件)
if os.path.isfile("/var/user/log/"+namedel+".log"):#判断需要删除的文件是否存在,存在即删除。
os.remove("/var/user/log/"+namedel+".log")#执行删除操作
tim=datetime.datetime.now().strftime('%Y-%m-%d-%H:%M:%S')#这个是生成存储消息的时间。
path='/var/user/log/'+name+".log"#数据存储文件的位置。
tex=open(path,"a",encoding="utf8" )#打开文件
tex.write("%s数据%s\n" %(tim,value_list) )#写入数据
tex.close()#关闭文件
后边是完整代码
from common.Logger import logger
import json,os
import logging
import datetime
def vars_cache_test(data_collect, wizard_api):
value_list = []
utc_time = datetime.datetime.utcfromtimestamp(data_collect["timestamp"]+28800)
for device, val_dict in data_collect['values'].items():
value_dict = {
"deviceID": device,
"timestamp": utc_time.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
"fields": { }
}
for id, val in val_dict.items():
value_dict["fields"][id] = val["raw_data"]
value_list.append(value_dict)
name=datetime.datetime.now().strftime("%Y%m%d")
namedel=(datetime.datetime.now()+datetime.timedelta(days=-3)).strftime("%Y%m%d")
if os.path.isfile("/var/user/log/"+namedel+".log"):
os.remove("/var/user/log/"+namedel+".log")
tim=datetime.datetime.now().strftime('%Y-%m-%d-%H:%M:%S')
path='/var/user/log/'+name+".log"
tex=open(path,"a",encoding="utf8" )
tex.write("%s数据%s\n" %(tim,value_list) )
tex.close()
logging.info(value_list)
return value_list