Skip to content

Commit 57dafa5

Browse files
authored
Send rejected event so Leek picks it up (#3374)
1 parent 68f54c8 commit 57dafa5

3 files changed

Lines changed: 12 additions & 0 deletions

File tree

main/constants.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
"ul",
4141
}
4242
ALLOWED_HTML_ATTRIBUTES = {}
43+
TASK_REJECTED = "task-rejected"
4344

4445

4546
class PostHogEvents(Enum):

main/decorators.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
from celery.exceptions import Reject
1010
from django.core.cache import caches
1111

12+
from main.constants import TASK_REJECTED
13+
1214
log = logging.getLogger(__name__)
1315

1416
KEY_PREFIX = "cooldown"
@@ -80,6 +82,12 @@ def wrapper(*args, **kwargs):
8082
state=states.REJECTED,
8183
meta={"reason": "cooldown", "key": lock_key},
8284
)
85+
try:
86+
current_task.send_event(TASK_REJECTED, requeue=False)
87+
except Exception: # noqa: BLE001
88+
log.warning(
89+
"Failed to emit task-rejected event for %s", lock_key
90+
)
8391
reason = "cooldown active"
8492
raise Reject(reason, requeue=False)
8593
return None

main/decorators_test.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import pytest
44
from celery.exceptions import Reject
55

6+
from main.constants import TASK_REJECTED
67
from main.decorators import cooldown_task
78

89

@@ -167,6 +168,7 @@ def my_task():
167168
mock_task.update_state.assert_called_once()
168169
assert mock_task.update_state.call_args.kwargs["state"] == "REJECTED"
169170
assert mock_task.update_state.call_args.kwargs["meta"]["reason"] == "cooldown"
171+
mock_task.send_event.assert_called_once_with(TASK_REJECTED, requeue=False)
170172

171173

172174
def test_cooldown_task_returns_none_when_called_directly(mock_redis, mocker):
@@ -181,3 +183,4 @@ def my_task():
181183

182184
assert my_task() is None
183185
mock_task.update_state.assert_not_called()
186+
mock_task.send_event.assert_not_called()

0 commit comments

Comments
 (0)