From d58df0f34a0e4b9dcc9c5a9cae9038e7e0bf6e92 Mon Sep 17 00:00:00 2001 From: chris meyers Date: Fri, 28 Feb 2020 09:50:27 -0500 Subject: [PATCH] fix sliding window calculation --- awx/main/analytics/broadcast_websocket.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/awx/main/analytics/broadcast_websocket.py b/awx/main/analytics/broadcast_websocket.py index 2b087b3dff..937c101132 100644 --- a/awx/main/analytics/broadcast_websocket.py +++ b/awx/main/analytics/broadcast_websocket.py @@ -36,16 +36,18 @@ class FixedSlidingWindow(): self.buckets = dict() self.start_time = start_time or now_seconds() - def cleanup(self, now_bucket=now_seconds()): - if self.start_time + 60 >= now_bucket: - self.start_time = now_bucket - 60 + 1 + def cleanup(self, now_bucket=None): + now_bucket = now_bucket or now_seconds() + if self.start_time + 60 <= now_bucket: + self.start_time = now_bucket + 60 + 1 # Delete old entries - for k,v in self.buckets.items(): + for k in list(self.buckets.keys()): if k < self.start_time: del self.buckets[k] - def record(self, ts=datetime.datetime.now()): + def record(self, ts=None): + ts = ts or datetime.datetime.now() now_bucket = int((ts - datetime.datetime(1970,1,1)).total_seconds()) val = self.buckets.get(now_bucket, 0)