def get_info(process=None, interval=0, with_childs=False): """Return information about a process. (can be an pid or a Process object) If process is None, will return the information about the current process. """ # XXX moce get_info to circus.process ? from circus.process import (get_children, get_memory_info, get_cpu_percent, get_memory_percent, get_cpu_times, get_nice, get_cmdline, get_create_time, get_username) if process is None or isinstance(process, int): if process is None: pid = os.getpid() else: pid = process if pid in _PROCS: process = _PROCS[pid] else: _PROCS[pid] = process = Process(pid) info = {} try: mem_info = get_memory_info(process) info['mem_info1'] = bytes2human(mem_info[0]) info['mem_info2'] = bytes2human(mem_info[1]) except AccessDenied: info['mem_info1'] = info['mem_info2'] = "N/A" try: info['cpu'] = get_cpu_percent(process, interval=interval) except AccessDenied: info['cpu'] = "N/A" try: info['mem'] = round(get_memory_percent(process), 1) except AccessDenied: info['mem'] = "N/A" try: cpu_times = get_cpu_times(process) ctime = timedelta(seconds=sum(cpu_times)) ctime = "%s:%s.%s" % (ctime.seconds // 60 % 60, str((ctime.seconds % 60)).zfill(2), str(ctime.microseconds)[:2]) except AccessDenied: ctime = "N/A" info['ctime'] = ctime try: info['pid'] = process.pid except AccessDenied: info['pid'] = 'N/A' try: info['username'] = get_username(process) except AccessDenied: info['username'] = '******' try: info['nice'] = get_nice(process) except AccessDenied: info['nice'] = 'N/A' except NoSuchProcess: info['nice'] = 'Zombie' raw_cmdline = get_cmdline(process) try: cmdline = os.path.basename( shlex.split(raw_cmdline[0], posix=not IS_WINDOWS)[0] ) except (AccessDenied, IndexError): cmdline = "N/A" try: info['create_time'] = get_create_time(process) except AccessDenied: info['create_time'] = 'N/A' try: info['age'] = time.time() - get_create_time(process) except TypeError: info['create_time'] = get_create_time(process) except AccessDenied: info['age'] = 'N/A' info['cmdline'] = cmdline info['children'] = [] if with_childs: for child in get_children(process): info['children'].append(get_info(child, interval=interval)) return info
def get_info(process=None, interval=0, with_childs=False): """Return information about a process. (can be an pid or a Process object) If process is None, will return the information about the current process. """ # XXX moce get_info to circus.process ? from circus.process import (get_children, get_memory_info, get_cpu_percent, get_memory_percent, get_cpu_times, get_nice, get_cmdline, get_create_time, get_username) if process is None or isinstance(process, int): if process is None: pid = os.getpid() else: pid = process if pid in _PROCS: process = _PROCS[pid] else: _PROCS[pid] = process = Process(pid) info = {} try: mem_info = get_memory_info(process) info['mem_info1'] = bytes2human(mem_info[0]) info['mem_info2'] = bytes2human(mem_info[1]) except AccessDenied: info['mem_info1'] = info['mem_info2'] = "N/A" try: info['cpu'] = get_cpu_percent(process, interval=interval) except AccessDenied: info['cpu'] = "N/A" try: info['mem'] = round(get_memory_percent(process), 3) except AccessDenied: info['mem'] = "N/A" try: cpu_times = get_cpu_times(process) ctime = timedelta(seconds=sum(cpu_times)) ctime = "%s:%s.%s" % (ctime.seconds // 60 % 60, str((ctime.seconds % 60)).zfill(2), str(ctime.microseconds)[:2]) except AccessDenied: ctime = "N/A" info['ctime'] = ctime try: info['pid'] = process.pid except AccessDenied: info['pid'] = 'N/A' try: info['username'] = get_username(process) except AccessDenied: info['username'] = '******' try: info['nice'] = get_nice(process) except AccessDenied: info['nice'] = 'N/A' except NoSuchProcess: info['nice'] = 'Zombie' try: raw_cmdline = get_cmdline(process) cmdline = os.path.basename( shlex.split(raw_cmdline[0], posix=not IS_WINDOWS)[0] ) except (AccessDenied, IndexError): cmdline = "N/A" try: info['create_time'] = get_create_time(process) except AccessDenied: info['create_time'] = 'N/A' try: info['age'] = time.time() - get_create_time(process) except TypeError: info['create_time'] = get_create_time(process) except AccessDenied: info['age'] = 'N/A' info['cmdline'] = cmdline info['children'] = [] if with_childs: for child in get_children(process): info['children'].append(get_info(child, interval=interval)) return info