diff options
Diffstat (limited to 'debug_toolbar/panels/cache.py')
| -rw-r--r-- | debug_toolbar/panels/cache.py | 24 | 
1 files changed, 13 insertions, 11 deletions
| diff --git a/debug_toolbar/panels/cache.py b/debug_toolbar/panels/cache.py index 620be86..ace343b 100644 --- a/debug_toolbar/panels/cache.py +++ b/debug_toolbar/panels/cache.py @@ -6,12 +6,13 @@ from django.core.cache.backends.base import BaseCache  from django.utils.translation import ugettext_lazy as _  from debug_toolbar.panels import DebugPanel +  class CacheStatTracker(BaseCache):      """A small class used to track cache calls."""      def __init__(self, cache):          self.cache = cache          self.reset() -     +      def reset(self):          self.calls = []          self.hits = 0 @@ -21,11 +22,11 @@ class CacheStatTracker(BaseCache):          self.get_many = 0          self.deletes = 0          self.total_time = 0 -     +      def _get_func_info(self):          stack = inspect.stack()[2]          return (stack[1], stack[2], stack[3], stack[4]) -     +      def get(self, key, default=None):          t = time.time()          value = self.cache.get(key, default) @@ -38,7 +39,7 @@ class CacheStatTracker(BaseCache):          self.gets += 1          self.calls.append((this_time, 'get', (key,), self._get_func_info()))          return value -     +      def set(self, key, value, timeout=None):          t = time.time()          self.cache.set(key, value, timeout) @@ -46,7 +47,7 @@ class CacheStatTracker(BaseCache):          self.total_time += this_time * 1000          self.sets += 1          self.calls.append((this_time, 'set', (key, value, timeout), self._get_func_info())) -     +      def delete(self, key):          t = time.time()          self.cache.delete(key) @@ -54,7 +55,7 @@ class CacheStatTracker(BaseCache):          self.total_time += this_time * 1000          self.deletes += 1          self.calls.append((this_time, 'delete', (key,), self._get_func_info())) -     +      def get_many(self, keys):          t = time.time()          results = self.cache.get_many(keys) @@ -68,6 +69,7 @@ class CacheStatTracker(BaseCache):                  self.hits += 1          self.calls.append((this_time, 'get_many', (keys,), self._get_func_info())) +  class CacheDebugPanel(DebugPanel):      """      Panel that displays the cache statistics. @@ -75,7 +77,7 @@ class CacheDebugPanel(DebugPanel):      name = 'Cache'      template = 'debug_toolbar/panels/cache.html'      has_content = True -     +      def __init__(self, *args, **kwargs):          super(CacheDebugPanel, self).__init__(*args, **kwargs)          # This is hackish but to prevent threading issues is somewhat needed @@ -85,16 +87,16 @@ class CacheDebugPanel(DebugPanel):          else:              self.cache = CacheStatTracker(cache.cache)              cache.cache = self.cache -     +      def nav_title(self):          return _('Cache: %.2fms') % self.cache.total_time -     +      def title(self):          return _('Cache Usage') -     +      def url(self):          return '' -     +      def process_response(self, request, response):          self.record_stats({              'cache_calls': len(self.cache.calls), | 
