def METHOD_NAME(
    self,
    antares_solver_path: Path,
    study_uuid: str,
    uuid: UUID,
    launcher_parameters: LauncherParametersDTO,
) -> None:
    end = False
    def stop_reading_output() -> bool:
        if end and str(uuid) in self.logs:
            with open(
                self._get_job_final_output_path(str(uuid)),
                "w",
            ) as log_file:
                log_file.write(self.logs[str(uuid)])
            del self.logs[str(uuid)]
        return end
    tmp_path = tempfile.mkdtemp(prefix="local_launch_", dir=str(self.tmpdir))
    export_path = Path(tmp_path) / "export"
    try:
        self.callbacks.export_study(str(uuid), study_uuid, export_path, launcher_parameters)
        args = [
            str(antares_solver_path),
            f"--force-parallel={launcher_parameters.nb_cpu}",
            str(export_path),
        ]
        process = subprocess.Popen(
            args,
            stdout=subprocess.PIPE,
            stderr=subprocess.STDOUT,
            universal_newlines=True,
            encoding="utf-8",
        )
        self.job_id_to_study_id[str(uuid)] = (
            study_uuid,
            export_path,
            process,
        )
        self.callbacks.update_status(
            str(uuid),
            JobStatus.RUNNING,
            None,
            None,
        )
        thread = threading.Thread(
            target=lambda: LogTailManager.follow(
                cast(IO[str], process.stdout),
                self.create_update_log(str(uuid)),
                stop_reading_output,
                None,
            ),
            name=f"{self.__class__.__name__}-LogsWatcher",
            daemon=True,
        )
        thread.start()
        while process.poll() is None:
            time.sleep(1)
        if launcher_parameters is not None and (
            launcher_parameters.post_processing or launcher_parameters.adequacy_patch is not None
        ):
            subprocess.run(["Rscript", "post-processing.R"], cwd=export_path)
        output_id: Optional[str] = None
        try:
            output_id = self.callbacks.import_output(str(uuid), export_path / "output", {})
        except Exception as e:
            logger.error(
                f"Failed to import output for study {study_uuid} located at {export_path}",
                exc_info=e,
            )
        del self.job_id_to_study_id[str(uuid)]
        self.callbacks.update_status(
            str(uuid),
            JobStatus.FAILED if process.returncode != 0 or not output_id else JobStatus.SUCCESS,
            None,
            output_id,
        )
    except Exception as e:
        logger.error(f"Unexpected error happened during launch {uuid}", exc_info=e)
        self.callbacks.update_status(
            str(uuid),
            JobStatus.FAILED,
            str(e),
            None,
        )
    finally:
        logger.info(f"Removing launch {uuid} export path at {tmp_path}")
        end = True
        shutil.rmtree(tmp_path)