キャッシュデコレータ

後で会社ブログに解説を書く、かもしれない。

def deco_cache(expire=86400):
    def decorater(f):
        def decorated(*args, **kw):
            from django.core.cache import cache
            key = f.func_name + str(args) + str(kw)
            result = cache.get(key)
            if result:
                return result

            result = f(*args, **kw)
            cache.set(key, result, expire)
            return result
        return decorated
    return decorater