Skip to content

Commit a9b095f

Browse files
committed
Fix overriding of target queue for singly-enqueued tasks
This was a regression in v4.3.0.
1 parent 9aa515c commit a9b095f

File tree

3 files changed

+27
-3
lines changed

3 files changed

+27
-3
lines changed

django_lightweight_queue/task.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,11 +179,10 @@ def _enqueue_job_instances(
179179
get_backend(queue).bulk_enqueue(new_jobs, queue)
180180

181181
def __call__(self, *args: Any, **kwargs: Any) -> None:
182-
job = self._build_job(args, kwargs)
183-
184182
# Allow queue overrides, but you must ensure that this queue will exist
185183
queue = kwargs.pop('django_lightweight_queue_queue', self.queue)
186184

185+
job = self._build_job(args, kwargs)
187186
get_backend(queue).enqueue(job, queue)
188187

189188
def bulk_enqueue(

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "django-lightweight-queue"
3-
version = "4.3.0"
3+
version = "4.3.1"
44
description = "Lightweight & modular queue and cron system for Django"
55
authors = ["Thread Engineering <[email protected]>"]
66
license = "BSD-3-Clause"

tests/test_task.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,31 @@ def test_enqueues_job(self) -> None:
9090
job.as_dict(),
9191
)
9292

93+
def test_enqueues_job_queue_override(self) -> None:
94+
OTHER_QUEUE = QueueName('other-queue')
95+
self.assertEqual(0, self.backend.length(QUEUE))
96+
self.assertEqual(0, self.backend.length(OTHER_QUEUE))
97+
98+
dummy_task(42, django_lightweight_queue_queue=OTHER_QUEUE)
99+
100+
self.assertIsNone(self.backend.dequeue(QUEUE, WorkerNumber(0), 1))
101+
102+
job = self.backend.dequeue(OTHER_QUEUE, WorkerNumber(0), 1)
103+
# Plain assert to placate mypy
104+
assert job is not None, "Failed to get a job after enqueuing one"
105+
106+
self.assertEqual(
107+
{
108+
'path': 'tests.test_task.dummy_task',
109+
'args': [42],
110+
'kwargs': {},
111+
'timeout': None,
112+
'sigkill_on_stop': False,
113+
'created_time': mock.ANY,
114+
},
115+
job.as_dict(),
116+
)
117+
93118
def test_bulk_enqueues_jobs(self) -> None:
94119
self.assertEqual(0, self.backend.length(QUEUE))
95120

0 commit comments

Comments
 (0)