Univention Bugzilla – Attachment 6975 Details for
Bug 38738
top: NoSuchProcess(pid) Traceback
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Catch NoSuchProcess exception
38xxx_umc-top-psutil.diff (text/plain), 3.48 KB, created by
Philipp Hahn
on 2015-06-22 09:36 CEST
(
hide
)
Description:
Catch NoSuchProcess exception
Filename:
MIME Type:
Creator:
Philipp Hahn
Created:
2015-06-22 09:36 CEST
Size:
3.48 KB
patch
obsolete
>diff --git a/branches/ucs-3.2/ucs-3.2-6/management/univention-management-console-module-top/umc/python/top/__init__.py b/branches/ucs-3.2/ucs-3.2-6/management/univention-management-console-module-top/umc/python/top/__init__.py >index 9868510..0567cd0 100644 >--- a/branches/ucs-3.2/ucs-3.2-6/management/univention-management-console-module-top/umc/python/top/__init__.py >+++ b/branches/ucs-3.2/ucs-3.2-6/management/univention-management-console-module-top/umc/python/top/__init__.py >@@ -34,7 +34,6 @@ > import time > import psutil > >-import univention.info_tools as uit > import univention.management.console as umc > import univention.management.console.modules as umcm > from univention.management.console.log import MODULE >@@ -45,18 +44,21 @@ from univention.management.console.modules.sanitizers import PatternSanitizer > > _ = umc.Translation('univention-management-console-module-top').translate > >+ > def kill(process): > if hasattr(process, 'terminate'): > process.kill() > return > process.kill(15) > >+ > def terminate(process): > if hasattr(process, 'terminate'): > process.terminate() > return > process.kill(9) > >+ > class Instance(umcm.Base): > @sanitize(pattern=PatternSanitizer(default='.*')) > def query(self, request): >@@ -64,21 +66,20 @@ class Instance(umcm.Base): > pattern = request.options.get('pattern') > processes = [] > for process in psutil.process_iter(): >- listEntry = {} >- # Temporary variables; used to calculate cpu percentage >- listEntry['timestamp'] = [] >- listEntry['cpu_time'] = [] >- listEntry['timestamp'].append(time.time()) >- (user_time, system_time, ) = process.get_cpu_times() >- listEntry['cpu_time'].append(user_time + system_time) >+ try: >+ (user_time, system_time, ) = process.get_cpu_times() >+ listEntry = { >+ 'timestamp': time.time(), >+ 'cpu_time': user_time + system_time, >+ 'user': process.username, >+ 'pid': process.pid, >+ 'cpu': 0.0, >+ 'mem': process.get_memory_percent(), >+ 'command': ' '.join(process.cmdline) or process.name, >+ } >+ except psutil.NoSuchProcess: >+ continue > >- listEntry['user'] = process.username >- listEntry['pid'] = process.pid >- listEntry['cpu'] = 0.0 >- listEntry['mem'] = process.get_memory_percent() >- listEntry['command'] = ' '.join(process.cmdline) >- if listEntry['command'] == '': >- listEntry['command'] = process.name > if category == 'all': > for value in listEntry.itervalues(): > if pattern.match(str(value)): >@@ -93,20 +94,17 @@ class Instance(umcm.Base): > for process_entry in processes: > try: > process = psutil.Process(process_entry['pid']) >+ (user_time, system_time, ) = process.get_cpu_times() > except psutil.NoSuchProcess: > pass > else: >- process_entry['timestamp'].append(time.time()) >- (user_time, system_time, ) = process.get_cpu_times() >- process_entry['cpu_time'].append(user_time + system_time) >- >- elapsed_time = process_entry['timestamp'][1] - process_entry['timestamp'][0] >- elapsed_cpu_time = process_entry['cpu_time'][1] - process_entry['cpu_time'][0] >+ elapsed_time = time.time() - process_entry['timestamp'] >+ elapsed_cpu_time = user_time + system_time - process_entry['cpu_time'] > cpu_percent = (elapsed_cpu_time / elapsed_time) * 100 > process_entry['cpu'] = cpu_percent >- # Cleanup request result >- del process_entry['timestamp'] >- del process_entry['cpu_time'] >+ # Cleanup request result >+ del process_entry['timestamp'] >+ del process_entry['cpu_time'] > > request.status = SUCCESS > self.finished(request.id, processes)
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
Actions:
View
|
Diff
Attachments on
bug 38738
: 6975