Skip to content

Commit d917cdf

Browse files
committed
Optimise getting jobs for RQ backend
1 parent b3863c6 commit d917cdf

File tree

1 file changed

+9
-8
lines changed
  • django_tasks/backends

1 file changed

+9
-8
lines changed

django_tasks/backends/rq.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from collections.abc import Iterable
22
from importlib.metadata import version
33
from types import TracebackType
4-
from typing import Any, TypeVar
4+
from typing import Any, TypeVar, cast
55

66
import django_rq
77
from django.apps import apps
@@ -10,6 +10,7 @@
1010
from django.db import transaction
1111
from django.utils.functional import cached_property
1212
from redis.client import Redis
13+
from rq.exceptions import NoSuchJobError
1314
from rq.job import Callback, JobStatus
1415
from rq.job import Job as BaseJob
1516
from rq.registry import ScheduledJobRegistry
@@ -238,13 +239,13 @@ def save_result() -> None:
238239
def _get_queues(self) -> list[django_rq.queues.DjangoRQ]:
239240
return django_rq.queues.get_queues(*self.queues, job_class=Job) # type: ignore[no-any-return,no-untyped-call]
240241

241-
def _get_job(self, job_id: str) -> Job | None:
242-
for queue in self._get_queues():
243-
job = queue.fetch_job(job_id)
244-
if job is not None:
245-
return job # type: ignore[return-value]
246-
247-
return None
242+
def _get_job(self, result_id: str) -> Job | None:
243+
try:
244+
return cast(
245+
Job, Job.fetch(result_id, connection=django_rq.get_connection())
246+
)
247+
except NoSuchJobError:
248+
return None
248249

249250
def get_result(self, result_id: str) -> TaskResult:
250251
job = self._get_job(result_id)

0 commit comments

Comments
 (0)