diff options
author | David Cramer <dcramer@gmail.com> | 2016-05-24 12:59:40 -0700 |
---|---|---|
committer | David Cramer <dcramer@gmail.com> | 2016-05-24 13:05:07 -0700 |
commit | 08832aa36ec5aeada388fe7bdf28b9bd3f6490dc (patch) | |
tree | 5fa8d66a30af693b1a248605d529c047cb985699 | |
parent | 105fdf3fa5091ab1eccb894cfad34560e097622d (diff) | |
download | raven-08832aa36ec5aeada388fe7bdf28b9bd3f6490dc.tar.gz |
Add fingerprint to soft timeouts in Celeryfingerprint-soft-timeouts
-rw-r--r-- | raven/contrib/celery/__init__.py | 11 |
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) |