Commit c165f85a by Őry Máté

common: log method_cache errors

parent d933efca
...@@ -221,7 +221,13 @@ def compute_cached(method, instance, memcached_seconds, ...@@ -221,7 +221,13 @@ def compute_cached(method, instance, memcached_seconds,
if isinstance(method, basestring): if isinstance(method, basestring):
model, id = instance model, id = instance
instance = model.objects.get(id=id) instance = model.objects.get(id=id)
method = getattr(instance, method)._original try:
method = getattr(instance, method)._original
except AttributeError:
logger.exception("Couldnt get original method of %s.%s",
unicode(instance), method.__name__)
raise
# call the actual method # call the actual method
result = method(instance, *args, **kwargs) result = method(instance, *args, **kwargs)
# save to memcache # save to memcache
...@@ -292,10 +298,13 @@ def method_cache(memcached_seconds=60, instance_seconds=5): # noqa ...@@ -292,10 +298,13 @@ def method_cache(memcached_seconds=60, instance_seconds=5): # noqa
elif not cache.get("%s.cached" % key): elif not cache.get("%s.cached" % key):
logger.debug("caches expiring, compute async") logger.debug("caches expiring, compute async")
cache.set("%s.cached" % key, 1, memcached_seconds * 0.5) cache.set("%s.cached" % key, 1, memcached_seconds * 0.5)
compute_cached.apply_async( try:
queue='localhost.man', kwargs=kwargs, args=[ compute_cached.apply_async(
method_name, (instance.__class__, instance.id), queue='localhost.man', kwargs=kwargs, args=[
memcached_seconds, key, time()] + list(args)) method_name, (instance.__class__, instance.id),
memcached_seconds, key, time()] + list(args))
except:
logger.exception("Couldnt compute async %s", method_name)
return result return result
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment