Wrapcache
:zap: A python Function / Method OUTPUT cache system base on function Decorators.
Install / Use
/learn @hustcc/WrapcacheREADME
wrapcache
A python Function / Method OUTPUT cache system base on function Decorators. Supports to cache into redis or LRU memory. 中文README.md
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)))
Some config:
@wrapcache.wrapcache(timeout = timeout, adapter = adapter)
timeout: how much seconds the cache exist. Default is-1, not cached.adapter: cache where, now can beRedisAdapterandMemoryAdapter. Default isMemoryAdapter.
When use RedisAdapter, you need to set redis instance before use. e.g.
REDIS_POOL = redis.ConnectionPool(host = '10.246.13.1', port = 6379, password = 'redis_pwd', db = 1)
REDIS_INST = redis.Redis(connection_pool = REDIS_POOL, charset = 'utf8')
RedisAdapter.db = REDIS_INST
When use MemoryAdapter, you can set Memory Storage Policy before use, that is choose where to store. Default is store in {}, also it provide LUR(Supported by jlhutch/pylru, add dynamic size.) algorithm. e.g.
from wrapcache.database import LruCacheDB
lruDB = MemoryAdapter.db = LruCacheDB(size = 100)
RedisAdapter.db = lruDB
How to Install and Use?
Install
Three ways to install wrapcache:
1. Use tool install
pip 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
wrapcachefolder into current directory orsite-packages, thenimport wrapcacheto 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, timeout = -1, 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 operate.
TODO
- usage wiki.
Related Skills
node-connect
349.9kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
349.9kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
349.9kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
