diff options
Diffstat (limited to 'django')
| -rw-r--r-- | django/core/cache/backends/memcached.py | 21 |
1 files changed, 4 insertions, 17 deletions
diff --git a/django/core/cache/backends/memcached.py b/django/core/cache/backends/memcached.py index d331642f09..ed3f2af492 100644 --- a/django/core/cache/backends/memcached.py +++ b/django/core/cache/backends/memcached.py @@ -23,17 +23,15 @@ class BaseMemcachedCache(BaseCache): self.LibraryValueNotFoundException = value_not_found_exception self._lib = library + self._class = library.Client self._options = params.get('OPTIONS') or {} - @property + @cached_property def _cache(self): """ Implement transparent thread-safe access to a memcached client. """ - if getattr(self, '_client', None) is None: - self._client = self._lib.Client(self._servers, **self._options) - - return self._client + return self._class(self._servers, **self._options) def get_backend_timeout(self, timeout=DEFAULT_TIMEOUT): """ @@ -166,14 +164,7 @@ class MemcachedCache(BaseMemcachedCache): # incr/decr(), python-memcached < 1.45 raises ValueError. import memcache super().__init__(server, params, library=memcache, value_not_found_exception=ValueError) - - @property - def _cache(self): - if getattr(self, '_client', None) is None: - client_kwargs = {'pickleProtocol': pickle.HIGHEST_PROTOCOL} - client_kwargs.update(self._options) - self._client = self._lib.Client(self._servers, **client_kwargs) - return self._client + self._options = {'pickleProtocol': pickle.HIGHEST_PROTOCOL, **self._options} def get(self, key, default=None, version=None): key = self.make_key(key, version=version) @@ -201,10 +192,6 @@ class PyLibMCCache(BaseMemcachedCache): import pylibmc super().__init__(server, params, library=pylibmc, value_not_found_exception=pylibmc.NotFound) - @cached_property - def _cache(self): - return self._lib.Client(self._servers, **self._options) - def touch(self, key, timeout=DEFAULT_TIMEOUT, version=None): key = self.make_key(key, version=version) self.validate_key(key) |
