'Run the updater continuously.'

def run_forever(self, *args, **kwargs):

    time.sleep((random() * self.interval))
    while True:
        self.logger.info(_('Begin    container    update    sweep'))
        begin = time.time()
        now = time.time()
        expired_suppressions = [a for (a, u) in self.account_suppressions.items() if (u < now)]
        for account in expired_suppressions:
            del self.account_suppressions[account]
        pid2filename = {}
        self.get_account_ring().get_nodes('')
        for path in self.get_paths():
            while (len(pid2filename) >= self.concurrency):
                pid = os.wait()[0]
                try:
                    self._load_suppressions(pid2filename[pid])
                finally:
                    del pid2filename[pid]
            (fd, tmpfilename) = mkstemp()
            os.close(fd)
            pid = os.fork()
            if pid:
                pid2filename[pid] = tmpfilename
            else:
                signal.signal(signal.SIGTERM, signal.SIG_DFL)
                patcher.monkey_patch(all=False, socket=True, select=True, thread=True)
                self.no_changes = 0
                self.successes = 0
                self.failures = 0
                self.new_account_suppressions = open(tmpfilename, 'w')
                forkbegin = time.time()
                self.container_sweep(path)
                elapsed = (time.time() - forkbegin)
                self.logger.debug(_('Container    update    sweep    of    %(path)s    completed:    %(elapsed).02fs,    %(success)s    successes,    %(fail)s    failures,    %(no_change)s    with    no    changes'), {'path': path, 'elapsed': elapsed, 'success': self.successes, 'fail': self.failures, 'no_change': self.no_changes})
                sys.exit()
        while pid2filename:
            pid = os.wait()[0]
            try:
                self._load_suppressions(pid2filename[pid])
            finally:
                del pid2filename[pid]
        elapsed = (time.time() - begin)
        self.logger.info(_('Container    update    sweep    completed:    %.02fs'), elapsed)
        dump_recon_cache({'container_updater_sweep': elapsed}, self.rcache, self.logger)
        if (elapsed < self.interval):
            time.sleep((self.interval - elapsed))
