def screen(self): bras_stats = '' for bras in Bras.objects.active(): bras_stats += ' {0}: {1} sessions were cached at {2}\n'.format(bras.name, bras.last_update_sessions(), bras.last_update_datetime()) current_time = time() delta = current_time - self.previos_time cm = coa_counter() stats = cache_stats() completed_notifications_num = UserNotificationRecord.objects.filter(is_completed=True).count() notifications_num = UserNotificationRecord.objects.count() result = SCREEN_TEMPLATE.format( cm=cm, cmps=(cm - self.previos_cm) / delta, cq=CoaQueue.objects.all().count(), bras=bras_stats, mi=stats['curr_items'], ms=stats['cmd_set'], msps=(stats['cmd_set'] - self.previos_ms) / delta, mg=stats['cmd_get'], mgps=(stats['cmd_get'] - self.previos_mg) / delta, la=' '.join(map(str, getloadavg())), nc=completed_notifications_num, ncp=completed_notifications_num / notifications_num * 100 ) self.previos_time = current_time self.previos_cm = cm self.previos_mg = stats['cmd_get'] self.previos_ms = stats['cmd_set'] return result
def handle(self, *args, **options): stats = cache_stats() stats['coa_counter'] = coa_counter() stats['coa_queue'] = CoaQueue.objects.all().count() if options['zenoss']: formatted_stats = 'OK | ' + ' '.join(['{0}={1}'.format(key, stats[key]) for key in stats]) print(formatted_stats) elif options['screen']: try: window = curses.initscr() curses.noecho() window.clear() window.nodelay(True) except: curses.endwin() traceback.print_exc() sys.exit(1) key_pressed = None screen_refreshed = 0.00 while key_pressed not in ['q', 'Q']: if time() - screen_refreshed >= REFRESH_DELAY: window.clear() try: s = str(self.screen().encode('utf-8')) window.addstr(1, 1, s) except: curses.endwin() traceback.print_exc() sys.exit(1) screen_refreshed = time() try: key_pressed = window.getkey() except: key_pressed = None sleep(0.5) curses.endwin() else: for key in stats: print ('{0} : {1}'.format(key, stats[key]))