1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import md5
from django.conf import settings
def safe_cache_key(value):
'''Returns an md5 hexdigest of value if len(value) > 250. Replaces invalid memcache
control characters with an underscore. Also adds the CACHE_MIDDLEWARE_KEY_PREFIX
to your keys automatically.
'''
for char in value:
if ord(char) < 33:
value = value.replace(char, '_')
value = "%s_%s" % (settings.CACHE_MIDDLEWARE_KEY_PREFIX, value)
if len(value) <= 250:
return value
return md5.new(value).hexdigest()
|
More like this
- Function cache decorator by bradbeattie 6 months, 4 weeks ago
- Another Memcache Status View by cmheisel 5 years, 4 months ago
- Scalable and invalidateble cache_page decorator by marinho 4 years, 1 month ago
- Clean-ish memcached key generation by iiie 9 months ago
- Effective content caching for mass-load site using redirect feature by nnseva 1 year, 11 months ago
Comments
I was looking for this kind of cache key generator for memcached recently and here it is :)
One thing that might be considered when using this snippet is to replace md5 by hashlib library if you tend to use newer python version (md5 is deprecated in python2.5).
#
Actually, you can use django.utils.hashcompat.md5_constructor, which will use hashlib when available, and fallback to the old md5 import. The last line would be md5_constructor(value).digest()
#