使用了beaker做缓存
@
cache.cache('get_param',expire=3600)
def get_param(self,param_name):..
在某处清除缓存时,发现怎么都不生效
cache.invalidate(self.get_param,'get_param', param['param_name'])
最后醒悟,原来又是unicode & str的坑,现在临时方案是在清除缓存时,清两次,unicode和str参数各一次。
真是尴尬,设计api的时候是否对输入参数可以统一转换一下呢。
我自己做的缓存在生成key的时候也是一样的问题:
# def _mk_cache_sig(*args, **kwargs):
# src_data = repr(args) + repr(kwargs)
# m = hashlib.md5(src_data)
# sig = m.hexdigest()
# return sig