Log time spent querying memcached in logs when larger than 5ms.

(imported from commit a4de15026d24526a446b724500d1194dce824d1a)
This commit is contained in:
Tim Abbott
2013-04-18 18:00:33 -04:00
parent 5e22778843
commit 66b3c1fbff
2 changed files with 46 additions and 1 deletions

View File

@@ -6,6 +6,17 @@ from django.core.cache import cache as djcache
from django.core.cache import get_cache
from zephyr.lib.utils import statsd, statsd_key, make_safe_digest
import time
memcached_total_time = 0
memcached_total_requests = 0
def get_memcached_time():
return memcached_total_time
def get_memcached_requests():
return memcached_total_requests
def cache_with_key(keyfunc, cache_name=None, timeout=None):
"""Decorator which applies Django caching to a function.
@@ -18,13 +29,19 @@ def cache_with_key(keyfunc, cache_name=None, timeout=None):
def decorator(func):
@wraps(func)
def func_with_caching(*args, **kwargs):
global memcached_total_time
global memcached_total_requests
memcached_start = time.time()
if cache_name is None:
cache_backend = djcache
else:
cache_backend = get_cache(cache_name)
key = keyfunc(*args, **kwargs)
val = cache_backend.get(key)
memcached_total_requests += 1
memcached_total_time += (time.time() - memcached_start)
if val is not None:
statsd.incr("cache.%s.hit" % (statsd_key(key),))
@@ -37,7 +54,13 @@ def cache_with_key(keyfunc, cache_name=None, timeout=None):
return val[0]
val = func(*args, **kwargs)
memcached_start = time.time()
cache_backend.set(key, (val,), timeout=timeout)
memcached_total_requests += 1
memcached_total_time += (time.time() - memcached_start)
return val
return func_with_caching