def wrapper(func, self, *args, **kwargs): now = datetime.now() if key: c = key else: c = self.__class__.__name__ + func.__name__ k, handler, cond = key_gen(self, condition, anonymous, c, *args, **kwargs) value = Cache().findby_key(k) new_cond = {} if _valid_cache(value, handler, cond, new_cond, anonymous, now): if new_cond: c = Cache() c.key = k c.condition = new_cond["condition"] c.save(value["_id"]) return value["value"] else: val = func(self, *args, **kwargs) c = Cache() # need key, or save will not work c.key = k c.value = val c.expire = now + timedelta(seconds=expire) c.condition = new_cond.get("condition", "") if value: c.save(value["_id"]) else: c.insert() return val
def _cache_next(self): now = datetime.now() key = self._next_key_gen() val = self.get_argument("next", "/") c = Cache() c.key = key c.value = val c.expire = now + timedelta(seconds=600) value = c.findby_key(key) if value: c.save(value["_id"]) else: c.insert()