一个基于Python装饰器的缓存库 wrapcache
jopen
9年前
wrapcache
A python Function / Method OUTPUT cache system base on function Decorators.
Source code: https://github.com/hustcc/wrapcache
What's wrapcache?
wrapcache
is a decorator that enables caching of return values for functions.
The cache keys are dependent completely on the arguments passed to the function. very simple to use.
Also has some API
to Programmatic
get cache or remove cache. Support python 2.6 ~ python3.5.
Here's an example of how you might use wrapcache:
import wrapcache from time import sleep import random @wrapcache.wrapcache(timeout = 3) def need_cache_function(input, t = 2, o = 3): sleep(2) return random.randint(1, 100) if __name__ == "__main__": for i in range(10): sleep(1) print(need_cache_function(1, t = 2, o = 3)) #get cache Programmatic key_func = wrapcache.keyof(need_cache_function, 1, o = 3, t = 2) print(wrapcache.get(key_func)) #remove cache Programmatic print(wrapcache.remove(wrapcache.keyof(need_cache_function, 1, o = 3, t = 2)))
How to Install and Use?
Install
Three way to install:
1. Use tool install
easy_install wrapcache
or
pip install wrapcache
/pip3 install wrapcache
2. Download to install
- Download from https://pypi.python.org/pypi/wrapcache/, and run
python setup.py install
.
3. Manual installation
- Manual installation: Put
wrapcache
folder into current directory orsite-packages
, thenimport wrapcache
to use.
Usage
Decorators
import wrapcache @wrapcache.wrapcache(timeout = 3) def need_cache_function(): return 'hello wrapcache'
API
wrapcache.keyof(func, *args, **kws)
: get the key of function output cache.wrapcache.get(key, adapter = MemoryAdapter)
: get the value of cache.wrapcache.set(key, value, adapter = MemoryAdapter)
: set cache use code.wrapcache.remove(key, adapter = MemoryAdapter)
: remove a cache.wrapcache.flush(adapter = MemoryAdapter)
: clear all the cache.
The API 2~5, need to input a adapter
to set which db to flush.
TODO
- add redis and memcache supported.
- package to pip server.