使用Decorator让数据自动存储在GAE的memcache里

标签:Google App Engine, Python

这里只稍微介绍一下,你可以看《Decorator to get/set from the memcache automatically》这篇文章,评论也有不少优秀的点子。

先看封装函数:
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条评论 你不来一发么↓

    想说点什么呢?