3
3
import weakref
4
4
5
5
from sentry_sdk .hub import Hub
6
- from sentry_sdk .integrations import Integration , DidNotEnable
6
+ from sentry_sdk .integrations import DidNotEnable , Integration
7
+ from sentry_sdk .integrations .logging import ignore_logger
7
8
from sentry_sdk .tracing import Transaction
8
9
from sentry_sdk .utils import capture_internal_exceptions , event_from_exception
9
10
10
-
11
11
try :
12
- from rq .version import VERSION as RQ_VERSION
12
+ from rq .queue import Queue
13
13
from rq .timeouts import JobTimeoutException
14
+ from rq .version import VERSION as RQ_VERSION
14
15
from rq .worker import Worker
15
- from rq .queue import Queue
16
16
except ImportError :
17
17
raise DidNotEnable ("RQ not installed" )
18
18
19
19
from sentry_sdk ._types import MYPY
20
20
21
21
if MYPY :
22
- from typing import Any
23
- from typing import Dict
24
- from typing import Callable
25
-
26
- from rq .job import Job
22
+ from typing import Any , Callable , Dict
27
23
28
- from sentry_sdk .utils import ExcInfo
29
24
from sentry_sdk ._types import EventProcessor
25
+ from sentry_sdk .utils import ExcInfo
26
+
27
+ from rq .job import Job
30
28
31
29
32
30
class RqIntegration (Integration ):
@@ -89,7 +87,9 @@ def sentry_patched_perform_job(self, job, *args, **kwargs):
89
87
90
88
def sentry_patched_handle_exception (self , job , * exc_info , ** kwargs ):
91
89
# type: (Worker, Any, *Any, **Any) -> Any
92
- _capture_exception (exc_info ) # type: ignore
90
+ if job .is_failed :
91
+ _capture_exception (exc_info ) # type: ignore
92
+
93
93
return old_handle_exception (self , job , * exc_info , ** kwargs )
94
94
95
95
Worker .handle_exception = sentry_patched_handle_exception
@@ -108,6 +108,8 @@ def sentry_patched_enqueue_job(self, job, **kwargs):
108
108
109
109
Queue .enqueue_job = sentry_patched_enqueue_job
110
110
111
+ ignore_logger ("rq.worker" )
112
+
111
113
112
114
def _make_event_processor (weak_job ):
113
115
# type: (Callable[[], Job]) -> EventProcessor
0 commit comments