def add_empty_time(self): refresh_rate = cfg.refresh_rate() if cfg.refresh_rate() else 1.0 time_diff = time.time() - self.speed_log_time nr_diffs = int(floor(time_diff / refresh_rate)) if nr_diffs > 1: self.bps_list.extend(['0.0'] * nr_diffs) if len(self.bps_list) > self.bps_list_max: self.bps_list = self.bps_list[len(self.bps_list) - self.bps_list_max:]
def get_bps_list(self): refresh_rate = int(cfg.refresh_rate()) if cfg.refresh_rate() else 1 self.add_empty_time() # We record every second, but display at the user's refresh-rate return self.bps_list[::refresh_rate]
def update(self, server=None, amount=0, testtime=None): """ Update counters for "server" with "amount" bytes """ if testtime: t = testtime else: t = time.time() if t > self.end_of_day: # current day passed. get new end of day self.day_total = {} self.end_of_day = tomorrow(t) - 1.0 if t > self.end_of_week: self.week_total = {} self.end_of_week = next_week(t) - 1.0 if t > self.end_of_month: self.month_total = {} self.end_of_month = next_month(t) - 1.0 if server: if server not in self.day_total: self.day_total[server] = 0L self.day_total[server] += amount if server not in self.week_total: self.week_total[server] = 0L self.week_total[server] += amount if server not in self.month_total: self.month_total[server] = 0L self.month_total[server] += amount if server not in self.grand_total: self.grand_total[server] = 0L self.grand_total[server] += amount # Quota check if self.have_quota and self.quota_enabled: self.left -= amount if self.left <= 0.0: from sabnzbd.downloader import Downloader if Downloader.do and not Downloader.do.paused: Downloader.do.pause() logging.warning(T('Quota spent, pausing downloading')) # Speedometer try: self.bps = (self.bps * (self.last_update - self.start_time) + amount) / (t - self.start_time) except: self.bps = 0.0 self.last_update = t check_time = t - 5.0 if self.start_time < check_time: self.start_time = check_time if self.bps < 0.01: self.reset() elif self.log_time < check_time: logging.debug("bps: %s", self.bps) self.log_time = t refresh_rate = cfg.refresh_rate() if cfg.refresh_rate() else 1.0 if self.speed_log_time < (t - float(refresh_rate)): self.add_empty_time() self.bps_list.append("%i" % (self.bps / KIBI)) self.speed_log_time = t