Skip to content

Instantly share code, notes, and snippets.

@JackNova
Forked from abahgat/gae-memcache-decorator.py
Last active August 29, 2015 14:24
Show Gist options
  • Save JackNova/74b9f0cda7ae2b97198e to your computer and use it in GitHub Desktop.
Save JackNova/74b9f0cda7ae2b97198e to your computer and use it in GitHub Desktop.
import functools
import logging
from google.appengine.api import memcache
def cached(time=1200):
"""
Decorator that caches the result of a method for the specified time in seconds.
Use it as:
@cached(time=1200)
def functionToCache(arguments):
...
"""
def decorator(function):
@functools.wraps(function)
def wrapper(*args, **kwargs):
key = '%s%s%s' % (function.__name__, str(args), str(kwargs))
value = memcache.get(key)
logging.debug('Cache lookup for %s, found? %s', key, value != None)
if not value:
value = function(*args, **kwargs)
memcache.set(key, value, time=time)
return value
return wrapper
return decorator
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment