def f_cached(*args, **kwargs): global CACHE_ENABLED self = args[0] if not CACHE_ENABLED or not hasattr(self, 'project_id'): return f(*args, **kwargs) params = f.func_code.co_varnames[:f.func_code.co_argcount] vardict = dict(zip(params, ['<None>' for d in params])) vardict.update(dict(zip(f.func_code.co_varnames, args))) vardict.update(kwargs) # replace 'self' with module:class:id:method obj = '%s.%s.%s(%s' % (self.__class__.__module__, self.__class__.__name__, f.__name__, str(self.id)) vardict['self'] = obj from agilito.models import Project pv = Project.cache_id(self.project_id) key = CACHE_PREFIX + '.' key += ','.join([str(vardict[v]) for v in params]) + ')' v = cache.get(key + '#version') if v == pv: v = cache.get(key + '#value') if not v is None: return v v = f(*args, **kwargs) cache.set(key + '#version', pv, 1000000) cache.set(key + '#value', v, 1000000) return v
def f_cached(*args, **kwargs): global CACHE_ENABLED if not CACHE_ENABLED: return f(*args, **kwargs) params = f.func_code.co_varnames[1:f.func_code.co_argcount] vardict = dict(zip(params, ['<default>' for d in params])) vardict.update(dict(zip(params, args[1:]))) vardict.update(kwargs) u = args[0].user # request.user pv = Project.cache_id(vardict["project_id"]) key = "%s.agilito.views.%s(%s)" % (CACHE_PREFIX, f.__name__, ",".join([str(vardict[v]) for v in params])) v = cache.get(key + "#version") if v == pv: v = cache.get(key + "#value") if not v is None: return v v = f(*args, **kwargs) cache.set(key + '#version', pv, 1000000) cache.set(key + '#value', v, 1000000) return v
def f_cached(*args, **kwargs): from agilito.models import Project global CACHE_ENABLED if not CACHE_ENABLED: return f(*args, **kwargs) params = f.func_code.co_varnames[1:f.func_code.co_argcount] vardict = dict([(p,'<default>') for p in params]) vardict.update(dict(zip(params, args[1:]))) vardict.update(kwargs) u = args[0].user # request.user pv = Project.cache_id(vardict['project_id']) key = '%s.agilito.views.%s(%s)' % (CACHE_PREFIX, f.__name__, ','.join([str(vardict[v]) for v in params])) v = cache.get(key + '#version') if v == pv: v = cache.get(key + '#value') if not v is None: return v v = f(*args, **kwargs) cache.set(key + '#version', pv, 1000000) cache.set(key + '#value', v, 1000000) return v