|
1 | 1 | from collections.abc import Iterable
|
2 | 2 | from importlib.metadata import version
|
3 | 3 | from types import TracebackType
|
4 |
| -from typing import Any, TypeVar |
| 4 | +from typing import Any, TypeVar, cast |
5 | 5 |
|
6 | 6 | import django_rq
|
7 | 7 | from django.apps import apps
|
|
10 | 10 | from django.db import transaction
|
11 | 11 | from django.utils.functional import cached_property
|
12 | 12 | from redis.client import Redis
|
| 13 | +from rq.exceptions import NoSuchJobError |
13 | 14 | from rq.job import Callback, JobStatus
|
14 | 15 | from rq.job import Job as BaseJob
|
15 | 16 | from rq.registry import ScheduledJobRegistry
|
@@ -238,13 +239,13 @@ def save_result() -> None:
|
238 | 239 | def _get_queues(self) -> list[django_rq.queues.DjangoRQ]:
|
239 | 240 | return django_rq.queues.get_queues(*self.queues, job_class=Job) # type: ignore[no-any-return,no-untyped-call]
|
240 | 241 |
|
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 |
248 | 249 |
|
249 | 250 | def get_result(self, result_id: str) -> TaskResult:
|
250 | 251 | job = self._get_job(result_id)
|
|
0 commit comments