Add post_execute_in_worker signal (#309)

This commit is contained in:
prollings
2025-12-10 16:54:14 +01:00
committed by GitHub
parent fd927087f1
commit b51575a4b0
4 changed files with 53 additions and 4 deletions
+35 -1
View File
@@ -19,7 +19,12 @@ from django_q.models import Success, Task
from django_q.monitor import monitor, save_task
from django_q.pusher import pusher
from django_q.queues import Queue
from django_q.signals import post_execute, pre_enqueue, pre_execute
from django_q.signals import (
post_execute,
post_execute_in_worker,
pre_enqueue,
pre_execute,
)
from django_q.status import Stat
from django_q.tasks import (
async_task,
@@ -760,6 +765,35 @@ class TestSignals:
assert self.task.get("result") == -1
post_execute.disconnect(handler)
@pytest.mark.django_db
def test_post_execute_in_worker_signal(self, broker):
broker.list_key = "post_execute_in_worker_test:q"
broker.delete_queue()
self.signal_was_called: bool = False
self.task: Optional[dict] = None
self.func = None
def handler(sender, task, **kwargs):
self.signal_was_called = True
self.task = task
post_execute_in_worker.connect(handler)
task_id = async_task("math.copysign", 1, -1, broker=broker)
task_queue = Queue()
result_queue = Queue()
event = Event()
event.set()
pusher(task_queue, event, broker=broker)
task_queue.put("STOP")
worker(task_queue, result_queue, Value("f", -1))
result_queue.put("STOP")
monitor(result_queue, broker)
broker.delete_queue()
assert self.signal_was_called is True
assert self.task.get("id") == task_id
assert self.task.get("result") == -1
post_execute_in_worker.disconnect(handler)
@pytest.mark.django_db
def assert_result(task):