123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import os
- from django.core.cache.backends import memcached
- class BMemcached(memcached.BaseMemcachedCache):
- """
- An implementation of a cache binding using python-binary-memcached
- A.K.A BMemcached.
- """
- def __init__(self, server, params):
- import bmemcached
- if not params.get('OPTIONS', None):
- params['OPTIONS'] = {}
- username = params['OPTIONS'].get('username',
- os.environ.get('MEMCACHE_USERNAME', None))
- if username:
- params['OPTIONS']['username'] = username
- password = params['OPTIONS'].get('password',
- os.environ.get('MEMCACHE_PASSWORD', None))
- if password:
- params['OPTIONS']['password'] = password
- if not server:
- server = tuple(os.environ.get('MEMCACHE_SERVERS', '').split(','))
- super(BMemcached, self).__init__(server, params,
- library=bmemcached,
- value_not_found_exception=ValueError)
- @property
- def _cache(self):
- client = getattr(self, '_client', None)
- if client:
- return client
- if self._options:
- client = self._lib.Client(self._servers,
- self._options.get('username', None),
- self._options.get('password', None))
- else:
- client = self._lib.Client(self._servers,)
- self._client = client
- return client
|