Guest User

Untitled

a guest
May 27th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.67 KB | None | 0 0
  1. import datetime
  2. from collections import deque
  3. from functools import wraps
  4. from django.core.cache import cache
  5.  
  6. def timed_task(f):
  7. @wraps(f)
  8. def wrapper(*args, **kwargs):
  9. """Simple decorator to cache previous 10 execution times
  10.  
  11. """
  12. start = datetime.now()
  13. rslt = f(*args, **kwargs)
  14. diff = datetime.now() - start
  15. cache_key = '%s.timings' % args[0].__class__.__name__
  16. last_ten = cache.get(cache_key, deque([], 10))
  17. last_ten.append(diff.seconds + float(diff.microseconds)/1000000)
  18. if not cache.add(cache_key, last_ten, 86400):
  19. cache.set(cache_key, last_ten, 86400)
  20. return rslt
  21. return wrapper
Add Comment
Please, Sign In to add comment