Skip to content
This repository was archived by the owner on Oct 23, 2023. It is now read-only.

Commit d53948b

Browse files
committed
Add Celery config option to ignore expected exceptions
1 parent e03c642 commit d53948b

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

docs/integrations/celery.rst

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,19 @@ Celery error handling::
1616
# register a custom filter to filter out duplicate logs
1717
register_logger_signal(client)
1818

19-
# hook into the Celery error handler
20-
register_signal(client)
21-
2219
# The register_logger_signal function can also take an optional argument
2320
# `loglevel` which is the level used for the handler created.
2421
# Defaults to `logging.ERROR`
2522
register_logger_signal(client, loglevel=logging.INFO)
2623

24+
# hook into the Celery error handler
25+
register_signal(client)
26+
27+
# The register_signal function can also take an optional argument
28+
# `ignore_expected` which causes exception classes specified in Task.throws
29+
# to be ignored
30+
register_signal(client, ignore_expected=True)
31+
2732
A more complex version to encapsulate behavior:
2833

2934
.. code-block:: python

raven/contrib/celery/__init__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,11 @@ def filter(self, record):
2424
return extra_data.get('internal', record.funcName != '_log_error')
2525

2626

27-
def register_signal(client):
27+
def register_signal(client, ignore_expected=False):
2828
def process_failure_signal(sender, task_id, args, kwargs, einfo, **kw):
29+
if ignore_expected and isinstance(einfo.exception, sender.throws):
30+
return
31+
2932
# This signal is fired inside the stack so let raven do its magic
3033
if isinstance(einfo.exception, SoftTimeLimitExceeded):
3134
fingerprint = ['celery', 'SoftTimeLimitExceeded', sender]

0 commit comments

Comments
 (0)