按小时存储分区中的数据-Python

问题描述

我正在尝试构建一个python脚本,以获取两个给定时间戳之间的数据点,并计算接收到的每个数据点之间的差异。

两个时间戳之间接收到的数据点的示例:

{"_id":"1234","objId":"MAC-01","endDateTime":"2020-08-14T08:31:33.429Z","clientId":"CLIENT-01","startDateTime":"2020-08-14T08:30:36.986Z"},{"_id":"1234","endDateTime":"2020-08-14T08:35:33.429Z","startDateTime":"2020-08-14T08:33:36.986Z"}

我需要计算endDateTime和startDateTime之间的差并将其保存在我设法做到的变量中。

现在我的程序每10分钟运行一次,并且每次程序运行时在8:00:00和currentTime之间获取数据点,然后重新计算差异并将其保存在特定变量中。

我需要做的是每次脚本运行时,都希望将其分解为小时格式,因此它应该类似于:

{"hour":"8:00:00","difference":41},{"hour":"9:00:00","difference":56} and so on..

我苦苦挣扎的地方- 每当我的脚本运行时,它将一次性获取从8:00:00到currentTime的所有数据点。如果我每隔一小时进行一次API调用获取数据,这将变得非常耗费资源,这就是为什么我要一次性获取数据的原因,如何将按小时存储区中接收到的数据进行隔离?

我有一个computeDifference函数,使用所需的参数调用它,如下所示:

def computeDifference(self,cycletimes):
    totalDifference = 0
    for rt in range(0,len(cycletimes)):
        if(cycletimes[rt].has_key("startDateTime") and cycletimes[rt].has_key("endDateTime")):
                if(cycletimes[rt]["startDateTime"] is None or cycletimes[rt]["endDateTime"] is None):
                    totalDifference = totalDifference + 0
                else:
                    difference = (datetime.strptime(cycletimes[rt]["endDateTime"],'%Y-%m-%dT%H:%M:%s.%fZ') - datetime.strptime(cycletimes[rt]["startDateTime"],'%Y-%m-%dT%H:%M:%s.%fZ'))
                    totalDifference = totalDifference + (difference.total_seconds())
            else:
                totalDifference = totalDifference + 0
        return totalDifference

我的想法是,如果我可以对每小时存储桶中收到的数据点进行排序,那么我可以每小时运行一次以上功能,并更新具有各自差异的列表。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)