只需要一种选项:在1分钟内可实现!将函数执行结果缓存到memcached的装饰器
@cached(time=1200)
def functionToCache(arguments):
return arguments
在什么时候会很方便?
尤其是在开发涉及到爬取数据或外部数据的时候,我感到非常方便。
用法。
1. 运行pip install python-memcached命令安装python-memcached模块。
2. 将以下Python文件保存在合适的位置,并导入cached函数。
3. 在函数定义时,使用@cached(time=1000)的形式进行装饰。
示例中文“片段”。
def decorator_with_args(decorator_to_enhance):
"""
デコレータに引数を与えて返す関数
"""
def decorator_maker(*args, **kwargs) :
def decorator_wrapper(func) :
return decorator_to_enhance(func, *args, **kwargs)
return decorator_wrapper
return decorator_maker
@decorator_with_args
def cached(func, *args, **kwargs):
"""
関数の名前、引数をキーにして結果をキャッシュするデコレータ
使い方
@cached(time=1200)
def functionToCache(arguments):
"""
def wrapper(*pars):
key = func.__name__ + '_' + '_'.join([str(par) for par in pars])
print key
client = memcache.Client(['127.0.0.1:11211'])
val = client.get(key)
if not val:
val = func(*pars)
try:
client.set(key, val, time=kwargs['time'])
except:
pass #適当にどうぞ
return val
return wrapper
请以母语中文进行改写,只需要一种方案:
请参考
gae-memcache-decorator.py
https://gist.github.com/abahgat/1395810
gae-memcache-decorator.py
https://gist.github.com/abahgat/1395810