summaryrefslogtreecommitdiff
path: root/lib/python2.7/site-packages/django/contrib/sessions/backends/cache.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/django/contrib/sessions/backends/cache.py')
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/backends/cache.py74
1 files changed, 0 insertions, 74 deletions
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/backends/cache.py b/lib/python2.7/site-packages/django/contrib/sessions/backends/cache.py
deleted file mode 100644
index 596042f..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/backends/cache.py
+++ /dev/null
@@ -1,74 +0,0 @@
-from django.conf import settings
-from django.contrib.sessions.backends.base import SessionBase, CreateError
-from django.core.cache import get_cache
-from django.utils.six.moves import xrange
-
-KEY_PREFIX = "django.contrib.sessions.cache"
-
-
-class SessionStore(SessionBase):
- """
- A cache-based session store.
- """
- def __init__(self, session_key=None):
- self._cache = get_cache(settings.SESSION_CACHE_ALIAS)
- super(SessionStore, self).__init__(session_key)
-
- @property
- def cache_key(self):
- return KEY_PREFIX + self._get_or_create_session_key()
-
- def load(self):
- try:
- session_data = self._cache.get(self.cache_key, None)
- except Exception:
- # Some backends (e.g. memcache) raise an exception on invalid
- # cache keys. If this happens, reset the session. See #17810.
- session_data = None
- if session_data is not None:
- return session_data
- self.create()
- return {}
-
- def create(self):
- # Because a cache can fail silently (e.g. memcache), we don't know if
- # we are failing to create a new session because of a key collision or
- # because the cache is missing. So we try for a (large) number of times
- # and then raise an exception. That's the risk you shoulder if using
- # cache backing.
- for i in xrange(10000):
- self._session_key = self._get_new_session_key()
- try:
- self.save(must_create=True)
- except CreateError:
- continue
- self.modified = True
- return
- raise RuntimeError(
- "Unable to create a new session key. "
- "It is likely that the cache is unavailable.")
-
- def save(self, must_create=False):
- if must_create:
- func = self._cache.add
- else:
- func = self._cache.set
- result = func(self.cache_key,
- self._get_session(no_load=must_create),
- self.get_expiry_age())
- if must_create and not result:
- raise CreateError
-
- def exists(self, session_key):
- return (KEY_PREFIX + session_key) in self._cache
-
- def delete(self, session_key=None):
- if session_key is None:
- if self.session_key is None:
- return
- session_key = self.session_key
- self._cache.delete(KEY_PREFIX + session_key)
-
- @classmethod
- def clear_expired(cls):
- pass