Commit 126250a4 authored by Alex Gaynor's avatar Alex Gaynor
Browse files

Merge branch 'ticket_20613' of https://github.com/ersran9/django into t20613

parents d66bd1df 76ee39ce
Loading
Loading
Loading
Loading
+25 −22
Original line number Diff line number Diff line
@@ -26,28 +26,31 @@ class LocMemCache(BaseCache):
    def add(self, key, value, timeout=DEFAULT_TIMEOUT, version=None):
        key = self.make_key(key, version=version)
        self.validate_key(key)
        try:
            pickled = pickle.dumps(value, pickle.HIGHEST_PROTOCOL)
        except pickle.PickleError:
            return False
        with self._lock.writer():
            exp = self._expire_info.get(key)
            if exp is None or exp <= time.time():
                try:
                    pickled = pickle.dumps(value, pickle.HIGHEST_PROTOCOL)
                self._set(key, pickled, timeout)
                return True
                except pickle.PickleError:
                    pass
            return False

    def get(self, key, default=None, version=None):
        key = self.make_key(key, version=version)
        self.validate_key(key)
        pickled = None
        with self._lock.reader():
            exp = self._expire_info.get(key, 0)
            if exp is None or exp > time.time():
                try:
                pickled = self._cache[key]
        try:
            if pickled is not None:
                return pickle.loads(pickled)
        except pickle.PickleError:
            return default

        with self._lock.writer():
            try:
                del self._cache[key]
@@ -68,9 +71,9 @@ class LocMemCache(BaseCache):
    def set(self, key, value, timeout=DEFAULT_TIMEOUT, version=None):
        key = self.make_key(key, version=version)
        self.validate_key(key)
        with self._lock.writer():
        try:
            pickled = pickle.dumps(value, pickle.HIGHEST_PROTOCOL)
            with self._lock.writer():
                self._set(key, pickled, timeout)
        except pickle.PickleError:
            pass
@@ -81,9 +84,9 @@ class LocMemCache(BaseCache):
            raise ValueError("Key '%s' not found" % key)
        new_value = value + delta
        key = self.make_key(key, version=version)
        with self._lock.writer():
        try:
            pickled = pickle.dumps(new_value, pickle.HIGHEST_PROTOCOL)
            with self._lock.writer():
                self._cache[key] = pickled
        except pickle.PickleError:
            pass