Skip to content

Commit 005b426

Browse files
committed
Merge pull request #232 from andialbrecht/master
Fix for issue231: Only call _end_rusage() in TimerPanel when resource module is available.
2 parents f3cec8f + 9cb2449 commit 005b426

File tree

1 file changed

+31
-47
lines changed

1 file changed

+31
-47
lines changed

debug_toolbar/panels/timer.py

Lines changed: 31 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -22,78 +22,62 @@ class TimerDebugPanel(DebugPanel):
2222
else:
2323
has_content = True
2424
has_resource = True
25-
25+
2626
def process_request(self, request):
2727
self._start_time = time.time()
2828
if self.has_resource:
2929
self._start_rusage = resource.getrusage(resource.RUSAGE_SELF)
30-
30+
3131
def process_response(self, request, response):
32-
total_time = (time.time() - self._start_time) * 1000
32+
stats = {'total_time': (time.time() - self._start_time) * 1000}
3333
if self.has_resource:
3434
self._end_rusage = resource.getrusage(resource.RUSAGE_SELF)
35-
36-
utime = 1000 * self._elapsed_ru('ru_utime')
37-
stime = 1000 * self._elapsed_ru('ru_stime')
38-
vcsw = self._elapsed_ru('ru_nvcsw')
39-
ivcsw = self._elapsed_ru('ru_nivcsw')
40-
minflt = self._elapsed_ru('ru_minflt')
41-
majflt = self._elapsed_ru('ru_majflt')
42-
# these are documented as not meaningful under Linux. If you're running BSD
43-
# feel free to enable them, and add any others that I hadn't gotten to before
44-
# I noticed that I was getting nothing but zeroes and that the docs agreed. :-(
45-
#
46-
# blkin = self._elapsed_ru('ru_inblock')
47-
# blkout = self._elapsed_ru('ru_oublock')
48-
# swap = self._elapsed_ru('ru_nswap')
49-
# rss = self._end_rusage.ru_maxrss
50-
# srss = self._end_rusage.ru_ixrss
51-
# urss = self._end_rusage.ru_idrss
52-
# usrss = self._end_rusage.ru_isrss
53-
54-
self.record_stats({
55-
'total_time': total_time,
56-
'utime': utime,
57-
'stime': stime,
58-
'vcsw': vcsw,
59-
'ivcsw': ivcsw,
60-
'minflt': minflt,
61-
'majflt': majflt,
62-
# 'blkin': blkin,
63-
# 'blkout': blkout,
64-
# 'swap': swap,
65-
# 'rss': rss,
66-
# 'urss': urss,
67-
# 'srss': srss,
68-
# 'usrss': usrss,
69-
})
70-
35+
stats['utime'] = 1000 * self._elapsed_ru('ru_utime')
36+
stats['stime'] = 1000 * self._elapsed_ru('ru_stime')
37+
stats['vcsw'] = self._elapsed_ru('ru_nvcsw')
38+
stats['ivcsw'] = self._elapsed_ru('ru_nivcsw')
39+
stats['minflt'] = self._elapsed_ru('ru_minflt')
40+
stats['majflt'] = self._elapsed_ru('ru_majflt')
41+
# these are documented as not meaningful under Linux. If you're running BSD
42+
# feel free to enable them, and add any others that I hadn't gotten to before
43+
# I noticed that I was getting nothing but zeroes and that the docs agreed. :-(
44+
#
45+
# stats['blkin'] = self._elapsed_ru('ru_inblock')
46+
# stats['blkout'] = self._elapsed_ru('ru_oublock')
47+
# stats['swap'] = self._elapsed_ru('ru_nswap')
48+
# stats['rss'] = self._end_rusage.ru_maxrss
49+
# stats['srss'] = self._end_rusage.ru_ixrss
50+
# stats['urss'] = self._end_rusage.ru_idrss
51+
# stats['usrss'] = self._end_rusage.ru_isrss
52+
53+
self.record_stats(stats)
54+
7155
def nav_title(self):
7256
return _('Time')
73-
57+
7458
def nav_subtitle(self):
7559
stats = self.get_stats()
76-
60+
7761
# TODO l10n
7862
if self.has_resource:
7963
utime = self._end_rusage.ru_utime - self._start_rusage.ru_utime
8064
stime = self._end_rusage.ru_stime - self._start_rusage.ru_stime
8165
return 'CPU: %0.2fms (%0.2fms)' % ((utime + stime) * 1000.0, stats['total_time'])
8266
else:
8367
return 'TOTAL: %0.2fms' % (stats['total_time'])
84-
68+
8569
def title(self):
8670
return _('Resource Usage')
87-
71+
8872
def url(self):
8973
return ''
90-
74+
9175
def _elapsed_ru(self, name):
9276
return getattr(self._end_rusage, name) - getattr(self._start_rusage, name)
93-
77+
9478
def content(self):
9579
stats = self.get_stats()
96-
80+
9781
# TODO l10n on values
9882
rows = (
9983
(_('User CPU time'), '%0.3f msec' % stats['utime']),
@@ -106,7 +90,7 @@ def content(self):
10690
# ('Page faults', '%d no i/o, %d requiring i/o' % (stats['minflt'], stats['majflt'])),
10791
# ('Disk operations', '%d in, %d out, %d swapout' % (stats['blkin'], stats['blkout'], stats['swap'])),
10892
)
109-
93+
11094
context = self.context.copy()
11195
context.update({'rows': rows,})
11296
return render_to_string(self.template, context)

0 commit comments

Comments
 (0)