Skip to content

Instantly share code, notes, and snippets.

@takdavid
Created September 14, 2014 16:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save takdavid/32bc974053362f13a225 to your computer and use it in GitHub Desktop.
Save takdavid/32bc974053362f13a225 to your computer and use it in GitHub Desktop.
memoizer decorator with memcache
import memcache
import hashlib
client = None
def getClient() :
global client
if not client :
client = memcache.Client(['127.0.0.1:11211'], debug=0)
return client
def generateMemcacheKey(args, kwargs) :
margs = [x.__repr__() for x in args]
mkwargs = [x.__repr__() for x in kwargs.values()]
m = hashlib.md5()
map(m.update, margs + mkwargs)
return m.hexdigest()
def memcachememoize(f):
def memcache_memoized_function(*args, **kwargs):
hexdigest = generateMemcacheKey(args, kwargs)
key = f.__class__.__name__ + '.' + f.__name__ + '(' + hexdigest + ')'
if not getClient().add(key, 1) :
return getClient().get(key)
else :
value = f(*args, **kwargs)
getClient().set(key, value)
return value
return memcache_memoized_function
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment