|
1 | 1 | from collections.abc import Iterable
|
| 2 | +from importlib.metadata import version |
2 | 3 | from types import TracebackType
|
3 | 4 | from typing import Any, TypeVar
|
4 | 5 |
|
|
47 | 48 |
|
48 | 49 | class Job(BaseJob):
|
49 | 50 | def perform(self) -> Any:
|
50 |
| - assert self.worker_name is not None |
51 |
| - self.meta.setdefault("_django_tasks_worker_ids", []).append(self.worker_name) |
52 |
| - self.save_meta() # type: ignore[no-untyped-call] |
53 |
| - |
54 | 51 | task_started.send(
|
55 | 52 | type(self.task_result.task.get_backend()), task_result=self.task_result
|
56 | 53 | )
|
@@ -113,14 +110,18 @@ def task_result(self) -> TaskResult:
|
113 | 110 | kwargs=self.kwargs,
|
114 | 111 | backend=self.meta["backend_name"],
|
115 | 112 | errors=[],
|
116 |
| - worker_ids=self.meta.get("_django_tasks_worker_ids", []), |
| 113 | + worker_ids=[], |
117 | 114 | )
|
118 | 115 |
|
119 | 116 | exception_classes = self.meta.get("_django_tasks_exceptions", []).copy()
|
120 | 117 |
|
| 118 | + if self.worker_name and task_result.status == ResultStatus.RUNNING: |
| 119 | + task_result.worker_ids.append(self.worker_name) |
| 120 | + |
121 | 121 | rq_results = self.results()
|
122 | 122 |
|
123 | 123 | for rq_result in rq_results:
|
| 124 | + task_result.worker_ids.append(rq_result.worker_name) |
124 | 125 | if rq_result.type == Result.Type.FAILED:
|
125 | 126 | task_result.errors.append(
|
126 | 127 | TaskError(
|
@@ -272,3 +273,9 @@ def check(self, **kwargs: Any) -> Iterable[messages.CheckMessage]:
|
272 | 273 | f"{queue_name!r} is not configured for django-rq",
|
273 | 274 | f"Add {queue_name!r} to RQ_QUEUES",
|
274 | 275 | )
|
| 276 | + |
| 277 | + if tuple(map(int, (version("rq").split(".")))) < (2, 5, 0): |
| 278 | + yield messages.Error( |
| 279 | + "Only rq >= 2.5.0 is supported, found " + version("rq"), |
| 280 | + "Install a newer version of rq", |
| 281 | + ) |
0 commit comments