使用Decorator让数据自动存储在GAE的memcache里
2009 4 12 08:11 PM 2269次查看
分类:Google App Engine 标签:Google App Engine, Python
先看封装函数:
import settings # When using Django so as to skip the cache during testing.
def memoize(key, time=60):
"""Decorator to memoize functions using memcache."""
def decorator(fxn):
def wrapper(*args, **kwargs):
data = memcache.get(key) # 从memcache里取数
if data is not None:
return data
data = fxn(*args, **kwargs) # 没取到再通过原函数取数
memcache.set(key, data, time) # 取完后设置memcache,一个AOP的实现达成
return data
return wrapper
return decorator if not settings.DEBUG else fxn #如果是DEBUG模式就直接返回原函数,不进行进一步封装
用法:from django.shortcuts import render_to_response
@memoize('index') # 将值保存在memcache的index这个key里
def index_view(request):
"""Render the index view."""
return render_to_response("index.html")
需要注意key的设置是不能冲突的,第4个评论有自动生成key的方法,非常巧妙,有兴趣的不妨看看。
0条评论 你不来一发么↓