code: def _launch_job_task(self, job, task_parameters=None, add_tags=None):
      # type: (BaseScheduleJob, Optional[dict], Optional[List[str]]) -> Optional[ClearmlJob]
      # make sure this is not a function job
      if job.base_function:
          return None
  
      # check if this is a single instance, then we need to abort the Task
      if job.single_instance and job.get_last_executed_task_id():
          t = Task.get_task(task_id=job.get_last_executed_task_id())
          if t.status in ("in_progress", "queued"):
              self._log(
                  "Skipping Task {} scheduling, previous Task instance {} still running".format(
                      job.name, t.id
                  )
              )
              job.run(None)
              return None
  
      # actually run the job
      task_job = ClearmlJob(
          base_task_id=job.base_task_id,
          parameter_override=task_parameters or job.task_parameters,
          task_overrides=job.task_overrides,
          disable_clone_task=not job.clone_task,
          allow_caching=False,
          target_project=job.get_resolved_target_project(),
          tags=[add_tags]
          if add_tags and isinstance(add_tags, str)
          else add_tags,
      )
      self._log(
          "Scheduling Job {}, Task {} on queue {}.".format(
              job.name, task_job.task_id(), job.queue
          )
      )
      if task_job.launch(queue_name=job.queue):
          # mark as run
          job.run(task_job.task_id())
      return task_job
  
imports: import json
  import logging
  from datetime import datetime
  from threading import Thread, enumerate
  from time import sleep, time
  from typing import List, Union, Optional, Callable, Sequence, Dict
  from attr import attrs, attrib
  from dateutil.relativedelta import relativedelta
  from .job import ClearmlJob
  from .controller import PipelineController
  from ..backend_interface.util import datetime_from_isoformat, datetime_to_isoformat, mutually_exclusive
  from ..task import Task
label_desc: Use image node_id 12 for calling the BaseScheduler obj's underlying member method code with example usage: obj._launch_job_task(job, task_parameters, add_tags) and returns: task_job, None, None