Skip to content

Instantly share code, notes, and snippets.

@izogain
Forked from abahgat/gae-memcache-decorator.py
Created March 29, 2016 16:59
Show Gist options
  • Save izogain/14c24d51bfde4d0b22180f956f8b0429 to your computer and use it in GitHub Desktop.
Save izogain/14c24d51bfde4d0b22180f956f8b0429 to your computer and use it in GitHub Desktop.
A Python decorator to cache method results using memcache on Google AppEngine
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