def __init__(self, raw_stats, time): self.time = time m = self.both.match(raw_stats).groupdict() for key, value in m.iteritems(): self.__dict__[key] = float(value) dt = datetime.timedelta(seconds=self.uptime) self.uptime = PolishPrettyTimedelta(dt)
class Stats(object): get = """ # `get` (?P<load_1>\d+\.\d+)\s (?P<load_5>\d+\.\d+)\s (?P<load_15>\d+\.\d+)\s (?P<executing_entities>\d+)/ (?P<existing_entities>\d+)\s (?P<last_pid>\d+)\s (?P<uptime>\d+\.\d+)\s """ mem = """ # `mem` (?P<mem_total>\d+)\s (?P<mem_used>\d+)\s (?P<mem_free>\d+)\s (?P<shared>\d+)\s (?P<buffers>\d+)\s (?P<cached>\d+)\s (?P<cache_used>\d+)\s (?P<cache_free>\d+)\s (?P<swap_total>\d+)\s (?P<swap_used>\d+)\s (?P<swap_free>\d+) """ both = re.compile(get + mem, re.VERBOSE) def __init__(self, raw_stats, time): self.time = time m = self.both.match(raw_stats).groupdict() for key, value in m.iteritems(): self.__dict__[key] = float(value) dt = datetime.timedelta(seconds=self.uptime) self.uptime = PolishPrettyTimedelta(dt) @property def mem_percentage(self): return self.cache_used / self.mem_total * 100 @property def pretty_uptime(self): return self.uptime.toWords() def formatShort(self): return "%s/%s/%d%%" % (self.load_1, self.uptime, self.mem_percentage) def formatLong(self): return "%s %s %s | %d/%d | %s | %d/%dMB (%d%%)" % ( self.load_1, self.load_5, self.load_15, self.executing_entities, self.existing_entities, self.pretty_uptime, self.cache_used / 1024, self.mem_total / 1024, self.mem_percentage, )