|
10 | 10 | from django.utils.translation import gettext_lazy as _
|
11 | 11 |
|
12 | 12 | from scheduler.queues import get_queues, logger, get_queue
|
13 |
| -from scheduler.rq_classes import DjangoWorker, MODEL_NAMES, JobExecution |
| 13 | +from scheduler.rq_classes import DjangoWorker, OLD_MODEL_NAMES, JobExecution, MODEL_NAMES |
14 | 14 | from scheduler.settings import SCHEDULER_CONFIG, Broker
|
15 | 15 |
|
16 | 16 |
|
@@ -39,15 +39,26 @@ def get_next_cron_time(cron_string: Optional[str]) -> Optional[timezone.datetime
|
39 | 39 | return next_itr
|
40 | 40 |
|
41 | 41 |
|
42 |
| -def get_scheduled_task(task_model: Union[TaskType, str], task_id: int) -> "BaseTask": # noqa: F821 |
43 |
| - if isinstance(task_model, TaskType): |
44 |
| - model = apps.get_model(app_label="scheduler", model_name="Task") |
45 |
| - task = model.objects.filter(task_type=task_model, id=task_id).first() |
| 42 | +def get_scheduled_task(task_model: str, task_id: int) -> "BaseTask": # noqa: F821 |
| 43 | + if isinstance(task_model, str) and task_model not in OLD_MODEL_NAMES and task_model not in MODEL_NAMES: |
| 44 | + raise ValueError(f"Job Model `{task_model}` does not exist, choices are {OLD_MODEL_NAMES}") |
| 45 | + |
| 46 | + # Try with new model names |
| 47 | + model = apps.get_model(app_label="scheduler", model_name="Task") |
| 48 | + if task_model == "OnceTask": |
| 49 | + task = model.objects.filter(task_type=TaskType.ONCE, id=task_id).first() |
46 | 50 | if task is None:
|
47 | 51 | raise ValueError(f"Job {task_model}:{task_id} does not exit")
|
48 | 52 | return task
|
49 |
| - if isinstance(task_model, str) and task_model not in MODEL_NAMES: |
50 |
| - raise ValueError(f"Job Model `{task_model}` does not exist, choices are {MODEL_NAMES}") |
| 53 | + elif task_model == "RepeatableTask": |
| 54 | + task = model.objects.filter(task_type=TaskType.REPEATABLE, id=task_id).first() |
| 55 | + if task is not None: |
| 56 | + return task |
| 57 | + elif task_model == "CronTask": |
| 58 | + task = model.objects.filter(task_type=TaskType.CRON, id=task_id).first() |
| 59 | + if task is not None: |
| 60 | + return task |
| 61 | + |
51 | 62 | model = apps.get_model(app_label="scheduler", model_name=task_model)
|
52 | 63 | task = model.objects.filter(id=task_id).first()
|
53 | 64 | if task is None:
|
@@ -81,7 +92,7 @@ def create_worker(*queue_names, **kwargs) -> DjangoWorker:
|
81 | 92 | queues = get_queues(*queue_names)
|
82 | 93 | existing_workers = DjangoWorker.all(connection=queues[0].connection)
|
83 | 94 | existing_worker_names = set(map(lambda w: w.name, existing_workers))
|
84 |
| - kwargs["fork_job_execution"] = SCHEDULER_CONFIG.BROKER != Broker.FAKEREDIS |
| 95 | + kwargs.setdefault("fork_job_execution", SCHEDULER_CONFIG.BROKER != Broker.FAKEREDIS) |
85 | 96 | if kwargs.get("name", None) is None:
|
86 | 97 | kwargs["name"] = _calc_worker_name(existing_worker_names)
|
87 | 98 |
|
|
0 commit comments