def __call__(self): poller_ps, plotter_ps = None, None if self.args['--plotter']: plotter = Plotter(self.config) plotter_ps = plotter.run_in_process() time.sleep(5) if not plotter_ps.is_alive(): LOG.critical('Failed to start CherryPy web server') sys.exit(1) self.change_permissions() if self.args['--poller']: poller = Poller(self.config, self.scalr_config) while True: start_time = time.time() try: LOG.info('Start poller iteration') rrdcached_sock_file = self.config['rrd'][ 'rrdcached_sock_path'] if not os.path.exists(rrdcached_sock_file): raise Exception('rrdcached process is not running') poller_ps = poller.run_in_process() poller_ps.join(self.config['interval'] * 2) if poller_ps.is_alive(): LOG.error('Poller iteration timeout. Terminating') try: poller_ps.terminate() except: msg = 'Unable to terminate, reason: {error}'.format( error=helper.exc_info()) raise Exception(msg) LOG.info('Poller iteration time: %.2f' % (time.time() - start_time)) except KeyboardInterrupt: raise except: msg = 'Poller iteration failed, reason: {error}'.format( error=helper.exc_info()) LOG.error(msg) finally: sleep_time = start_time + self.config[ 'interval'] - time.time() - 0.1 if sleep_time > 0: time.sleep(sleep_time) if plotter_ps: plotter_ps.join()
def __call__(self): poller_ps, plotter_ps = None, None if self.args['--plotter']: plotter = Plotter(self.config) plotter_ps = plotter.run_in_process() time.sleep(5) if not plotter_ps.is_alive(): LOG.critical('Failed to start CherryPy web server') sys.exit(1) self.change_permissions() if self.args['--poller']: poller = Poller(self.config, self.scalr_config) while True: start_time = time.time() try: LOG.info('Start poller iteration') rrdcached_sock_file = self.config['rrd']['rrdcached_sock_path'] if not os.path.exists(rrdcached_sock_file): raise Exception('rrdcached process is not running') poller_ps = poller.run_in_process() poller_ps.join(self.config['interval'] * 2) if poller_ps.is_alive(): LOG.error('Poller iteration timeout. Terminating') try: poller_ps.terminate() except: msg = 'Unable to terminate, reason: {error}'.format( error=helper.exc_info()) raise Exception(msg) LOG.info('Poller iteration time: %.2f' % (time.time() - start_time)) except KeyboardInterrupt: raise except: msg = 'Poller iteration failed, reason: {error}'.format( error=helper.exc_info()) LOG.error(msg) finally: sleep_time = start_time + self.config['interval'] - time.time() - 0.1 if sleep_time > 0: time.sleep(sleep_time) if plotter_ps: plotter_ps.join()