# decorator wrapper for _Parser()
def Parser(cls, cache = False):
def _fun(fun):
def _Fun(*arg, **kw):
# try get from cache
if cache and (len(arg) >= 1 or '_id' in kw):
_id = arg[0] if arg else kw['_id']
o = Cacher(cls).get(_id)
if o:
return o
ret = fun(*arg, **kw)
try:
ret = _Parser(ret, cls)
except Exception as e:
logging.exception('failed to parse')
return ret
return _Fun
return _fun
主要是为了对函数的返回值做解析并缓存
大概是这样用的
@Parser(Type, True)
def get_type(_id):
...
现在脑袋有点晕