summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Cramer <dcramer@gmail.com>2016-05-24 12:59:40 -0700
committerDavid Cramer <dcramer@gmail.com>2016-05-24 13:05:07 -0700
commit08832aa36ec5aeada388fe7bdf28b9bd3f6490dc (patch)
tree5fa8d66a30af693b1a248605d529c047cb985699
parent105fdf3fa5091ab1eccb894cfad34560e097622d (diff)
downloadraven-08832aa36ec5aeada388fe7bdf28b9bd3f6490dc.tar.gz
Add fingerprint to soft timeouts in Celeryfingerprint-soft-timeouts
-rw-r--r--raven/contrib/celery/__init__.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/raven/contrib/celery/__init__.py b/raven/contrib/celery/__init__.py
index ba6186e..5674596 100644
--- a/raven/contrib/celery/__init__.py
+++ b/raven/contrib/celery/__init__.py
@@ -9,6 +9,7 @@ from __future__ import absolute_import
import logging
+from celery.exceptions import SoftTimeLimitExceeded
from celery.signals import after_setup_logger, task_failure
from raven.handlers.logging import SentryHandler
@@ -24,15 +25,21 @@ class CeleryFilter(logging.Filter):
def register_signal(client):
- def process_failure_signal(sender, task_id, args, kwargs, **kw):
+ def process_failure_signal(sender, task_id, args, kwargs, einfo, **kw):
# This signal is fired inside the stack so let raven do its magic
+ if isinstance(einfo.exception, SoftTimeLimitExceeded):
+ fingerprint = ['celery', 'SoftTimeLimitExceeded', sender]
+ else:
+ fingerprint = None
client.captureException(
extra={
'task_id': task_id,
'task': sender,
'args': args,
'kwargs': kwargs,
- })
+ },
+ fingerprint=fingerprint,
+ )
task_failure.connect(process_failure_signal, weak=False)