Django Cache Decorator
// simple decorator for caching result
from django.core.cache import cache
def cached(cache_key):
"""Cache decorator
"""
def doCache(func):
def _get_cached(*args, **kwargs):
result = cache.get(cache_key)
if result is None:
result = func(*args, **kwargs)
cache.set(cache_key, result)
return result
return _get_cached
return doCache
def delete_cached(cache_key):
"""Delete cache decorator
"""
def doDeleteCache(func):
def _delete_cached(*args, **kwargs):
result = func(*args, **kwargs)
cache.delete(cache_key)
return result
return _delete_cached
return doDeleteCache
// you can use this decorator into your models.
// for example
from google.appengine.ext import db
class Tag(db.Model):
"""The snippet tags
"""
name = db.StringProperty()
description = db.TextProperty()
entrycount = db.IntegerProperty(default=0)
@staticmethod
@cached('tags')
def getall():
return [tag for tag in Tag.all()]
@delete_cached('tags')
def save(self):
"""Will save the current tag and invalidate the cache automatically"""
self.put()
@delete_cached('tags')
def remove(self):
self.delete()