class ByHourHitCounts: def __init__(self, output, filters=[]): self.output = output self.dates = ExtendedList() self.serverips = ExtendedList() self.sums = {} for hour in range(0,24): self.sums[str(hour)] = float(0) self.filters = filters def logitem(self, logitem): if any([(filter.should_skip(logitem)) for filter in self.filters]): return date = datetime(logitem["year"],logitem["month"],logitem["day"]) self.dates.add_if_not_exists(date) serverip = logitem["s_ip"] self.serverips.add_if_not_exists(serverip) self.sums[str(logitem["hour"])] += 1 def end(self): for key in self.sums.keys(): if len(self.dates) == 0: self.sums[key] = 0 else: self.sums[key] /= len(self.dates) * len(self.serverips) self.output.write(self.sums)
def __init__(self, output, filters=[]): self.output = output self.dates = ExtendedList() self.serverips = ExtendedList() self.sums = {} for hour in range(0,24): self.sums[str(hour)] = float(0) self.filters = filters