R/run_worker.R

Defines functions run_worker

Documented in run_worker

#' run_worker
#'
#' @param code_path TODO
#' @param args_path TODO
#' @param parent_env_path TODO
#' @param save_path TODO
#' @param output_full_run_env TODO
#'
#' @return Nothing
#' @export
run_worker <- function(code_path, args_path, parent_env_path, save_path, output_full_run_env) {
  run_env <- new.env()
  run_env2 <- new.env()

  tryCatch(
    {
      args <- readRDS(args_path)
      run_env <- readRDS(parent_env_path)
      for (x in names(args)) {
        run_env[[x]] <- args[[x]]
      }

      run_env$u__run_success <- T
      run_env2$u__run_success <- T
      source(code_path, local = run_env)
    },
    error = function(e) {
      run_env$u__run_error <- e
      run_env$u__run_success <- F
      run_env2$u__run_error <- e
      run_env2$u__run_success <- F
    },
    finally = {
      if (output_full_run_env == F) {
        if ("job_output" %in% objects(envir = run_env)) {
          run_env2$job_output <- run_env$job_output
        }

        saveRDS(run_env2, file = save_path)
      } else {

        saveRDS(run_env, file = save_path)
      }
    }
  )
}
trevorlolsen/jobsR documentation built on Dec. 23, 2021, 12:56 p.m.