Guest User

Untitled

a guest
Jul 20th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.69 KB | None | 0 0
  1. CACHE_TTL = 60*60*24
  2.  
  3. def cached_property(func):
  4.  
  5. @wraps(func)
  6. def fget(self):
  7. cache_key = hash('%s.%s.%s(%s)' %(self.__class__.__module__,self.__class__.__name__,func.__name__,self.pk))
  8. val = cache.get(cache_key)
  9. if val is None:
  10. val = func(self)
  11. cache.set(cache_key,val,CACHE_TTL)
  12. return val
  13.  
  14. @wraps(func)
  15. def fset(self,new_val):
  16. cache_key = hash('%s.%s.%s(%s)' %(self.__class__.__module__,self.__class__.__name__,func.__name__,self.pk))
  17. cache.set(cache_key,new_val,CACHE_TTL)
  18.  
  19. @wraps(func)
  20. def fdel(self):
  21. cache_key = hash('%s.%s.%s(%s)' %(self.__class__.__module__,self.__class__.__name__,func.__name__,self.pk))
  22. cache.delete(cache_key)
  23.  
  24. return property(fget,fset,fdel)
Add Comment
Please, Sign In to add comment