Implements high level function caching to any backend with a decorator
pip install redis_cache_decorator
from cache_deco import Cache
from backends.redis.redis_backend import RedisBackend
# Create your cache backend
redis = RedisBackend('localhost', 6379)
# Use this backend as your cache
c = Cache(redis)@c.cache()
def my_method(a, b, c):
return a ** b ** cexpiration: Number of seconds to keep the result in the cache. Defaults to 60 seconds when not specified.
e.g.
@c.cache(expiration=100)
def my_method():
...signature_generator: Callable function that generates the signature to cache on. The default signature generator will be used if not specified.
e.g.
def sig_gen(*args, **kwargs):
return "?".join(args)
@c.cache(signature_generator=sig_gen)
def my_method():
...invalidator: Boolean to determine whether or not to return a cache invalidating function
e.g.
@c.cache(invalidator=True)
def my_method():
...Now when you call my_method, it will return two values. The first value is the cached return if a cache hit occurs, otherwise it's the return value from executing the function.
The second value is a callable function to invalidate the cache.
return_value, invalidator = my_method()To invalidate the cached return, just call the invalidator:
invalidator()You can use any backend for the cache by implementing the base class
Check for any open issues, or open one yourself! All contributions are appreciated.
nosetests