From b448a695a741a9cb2c362c367ac2183f9a018c9d Mon Sep 17 00:00:00 2001 From: Jon Lund Steffensen Date: Fri, 20 Sep 2024 13:23:20 -0700 Subject: [PATCH 1/2] Use einfo.tb when traceback is str --- bugsnag/celery/__init__.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bugsnag/celery/__init__.py b/bugsnag/celery/__init__.py index 15de77b9..519a32d2 100644 --- a/bugsnag/celery/__init__.py +++ b/bugsnag/celery/__init__.py @@ -1,3 +1,5 @@ +from types import TracebackType + import celery from celery.signals import task_failure import bugsnag @@ -11,6 +13,9 @@ def failure_handler(sender, task_id, exception, args, kwargs, traceback, einfo, "kwargs": kwargs } + if not isinstance(traceback, TracebackType): + traceback = einfo.tb + bugsnag.auto_notify(exception, traceback=traceback, context=sender.name, extra_data=task, From 41045f521a396ba3b101fe2944033a0e99173d74 Mon Sep 17 00:00:00 2001 From: Jon Lund Steffensen Date: Tue, 1 Oct 2024 12:23:51 -0700 Subject: [PATCH 2/2] Add comment --- bugsnag/celery/__init__.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bugsnag/celery/__init__.py b/bugsnag/celery/__init__.py index 519a32d2..c3a1ac7c 100644 --- a/bugsnag/celery/__init__.py +++ b/bugsnag/celery/__init__.py @@ -13,6 +13,9 @@ def failure_handler(sender, task_id, exception, args, kwargs, traceback, einfo, "kwargs": kwargs } + # In some cases, the traceback is actually a string instread of a real + # traceback object. In this case, the real traceback can be obtained from + # the einfo parameter. if not isinstance(traceback, TracebackType): traceback = einfo.tb