memcached.py 1.0 KB

1234567891011121314151617181920212223242526272829303132
  1. from django.core.cache.backends.memcached import BaseMemcachedCache
  2. import memcache
  3. DEFAULT_MAX_VALUE_LENGTH = 1024 * 1024 * 15
  4. class MemcachedCache(BaseMemcachedCache):
  5. def __init__(self, server, params):
  6. self._options = params.get("OPTIONS", {})
  7. memcache.SERVER_MAX_VALUE_LENGTH = self._options.get('SERVER_MAX_VALUE_LENGTH', DEFAULT_MAX_VALUE_LENGTH)
  8. super(MemcachedCache, self).__init__(
  9. server,
  10. params,
  11. library=memcache,
  12. value_not_found_exception=ValueError
  13. )
  14. @property
  15. def _cache(self):
  16. if getattr(self, '_client', None) is None:
  17. server_max_value_length = memcache.SERVER_MAX_VALUE_LENGTH
  18. '''
  19. one could optionally send more parameters here through the options settings,
  20. I simplified here for brevity
  21. '''
  22. self._client = self._lib.Client(
  23. self._servers,
  24. server_max_value_length=server_max_value_length
  25. )
  26. return self._client