web/lib/django/core/cache/backends/locmem.py
changeset 29 cc9b7e14412b
parent 0 0d40e90630ef
equal deleted inserted replaced
28:b758351d191f 29:cc9b7e14412b
    75         self._cache[key] = value
    75         self._cache[key] = value
    76         self._expire_info[key] = time.time() + timeout
    76         self._expire_info[key] = time.time() + timeout
    77 
    77 
    78     def set(self, key, value, timeout=None):
    78     def set(self, key, value, timeout=None):
    79         self._lock.writer_enters()
    79         self._lock.writer_enters()
    80         # Python 2.3 and 2.4 don't allow combined try-except-finally blocks.
    80         # Python 2.4 doesn't allow combined try-except-finally blocks.
    81         try:
    81         try:
    82             try:
    82             try:
    83                 self._set(key, pickle.dumps(value), timeout)
    83                 self._set(key, pickle.dumps(value), timeout)
    84             except pickle.PickleError:
    84             except pickle.PickleError:
    85                 pass
    85                 pass
   108         finally:
   108         finally:
   109             self._lock.writer_leaves()
   109             self._lock.writer_leaves()
   110 
   110 
   111     def _cull(self):
   111     def _cull(self):
   112         if self._cull_frequency == 0:
   112         if self._cull_frequency == 0:
   113             self._cache.clear()
   113             self.clear()
   114             self._expire_info.clear()
       
   115         else:
   114         else:
   116             doomed = [k for (i, k) in enumerate(self._cache) if i % self._cull_frequency == 0]
   115             doomed = [k for (i, k) in enumerate(self._cache) if i % self._cull_frequency == 0]
   117             for k in doomed:
   116             for k in doomed:
   118                 self._delete(k)
   117                 self._delete(k)
   119 
   118 
   131         self._lock.writer_enters()
   130         self._lock.writer_enters()
   132         try:
   131         try:
   133             self._delete(key)
   132             self._delete(key)
   134         finally:
   133         finally:
   135             self._lock.writer_leaves()
   134             self._lock.writer_leaves()
       
   135 
       
   136     def clear(self):
       
   137         self._cache.clear()
       
   138         self._expire_info.clear()