Ticket #6131: locmem-fix.patch
| File locmem-fix.patch, 2.1 kB (added by sherbang, 1 year ago) |
|---|
-
a/django/core/cache/backends/locmem.py
old new 29 29 30 30 self._lock = RWLock() 31 31 32 def _add(self, key, value, timeout=None):33 if len(self._cache) >= self._max_entries:34 self._cull()35 if timeout is None:36 timeout = self.default_timeout37 if key not in self._cache.keys():38 self._cache[key] = value39 self._expire_info[key] = time.time() + timeout40 41 32 def add(self, key, value, timeout=None): 42 33 self._lock.writer_enters() 43 # Python 2.3 and 2.4 don't allow combined try-except-finally blocks.44 34 try: 45 try: 46 self._add(key, pickle.dumps(value), timeout) 47 except pickle.PickleError: 48 pass 35 now = time.time() 36 exp = self._expire_info.get(key) 37 if exp is None or exp < now: 38 try: 39 self._set(key, pickle.dumps(value), timeout) 40 except pickle.PickleError: 41 pass 49 42 finally: 50 43 self._lock.writer_leaves() 51 44 … … 95 88 self._lock.writer_leaves() 96 89 97 90 def has_key(self, key): 98 return key in self._cache 91 should_delete = False 92 self._lock.reader_enters() 93 try: 94 now = time.time() 95 exp = self._expire_info.get(key) 96 if exp is None: 97 return False 98 elif exp < now: 99 should_delete = True 100 else: 101 return True 102 finally: 103 self._lock.reader_leaves() 104 if should_delete: 105 self._lock.writer_enters() 106 try: 107 del self._cache[key] 108 del self._expire_info[key] 109 return False 110 finally: 111 self._lock.writer_leaves() 99 112 100 113 def _cull(self): 101 114 if self._cull_frequency == 0:
