Create a launcher with local process workers.
Source:R/crew_launcher_local.R
crew_launcher_local.Rd
Create an R6
object to launch and maintain
local process workers.
Usage
crew_launcher_local(
name = NULL,
seconds_interval = 0.5,
seconds_timeout = 60,
seconds_launch = 30,
seconds_idle = Inf,
seconds_wall = Inf,
seconds_exit = NULL,
tasks_max = Inf,
tasks_timers = 0L,
reset_globals = TRUE,
reset_packages = FALSE,
reset_options = FALSE,
garbage_collection = FALSE,
launch_max = 5L,
tls = crew::crew_tls(),
r_arguments = c("--no-save", "--no-restore"),
local_log_directory = NULL,
local_log_join = TRUE
)
Arguments
- name
Name of the launcher.
- seconds_interval
Number of seconds between polling intervals waiting for certain internal synchronous operations to complete, such as checking
mirai::status()
.- seconds_timeout
Number of seconds until timing out while waiting for certain synchronous operations to complete, such as checking
mirai::status()
.- seconds_launch
Seconds of startup time to allow. A worker is unconditionally assumed to be alive from the moment of its launch until
seconds_launch
seconds later. Afterseconds_launch
seconds, the worker is only considered alive if it is actively connected to its assign websocket.- seconds_idle
Maximum number of seconds that a worker can idle since the completion of the last task. If exceeded, the worker exits. But the timer does not launch until
tasks_timers
tasks have completed. See theidletime
argument ofmirai::daemon()
.crew
does not excel with perfectly transient workers because it does not micromanage the assignment of tasks to workers, so please allow enough idle time for a new worker to be delegated a new task.- seconds_wall
Soft wall time in seconds. The timer does not launch until
tasks_timers
tasks have completed. See thewalltime
argument ofmirai::daemon()
.- seconds_exit
Deprecated on 2023-09-21 in version 0.5.0.9002. No longer necessary.
- tasks_max
Maximum number of tasks that a worker will do before exiting. See the
maxtasks
argument ofmirai::daemon()
.crew
does not excel with perfectly transient workers because it does not micromanage the assignment of tasks to workers, it is recommended to settasks_max
to a value greater than 1.- tasks_timers
Number of tasks to do before activating the timers for
seconds_idle
andseconds_wall
. See thetimerstart
argument ofmirai::daemon()
.- reset_globals
TRUE
to reset global environment variables between tasks,FALSE
to leave them alone.- reset_packages
TRUE
to unload any packages loaded during a task (runs between each task),FALSE
to leave packages alone.- reset_options
TRUE
to reset global options to their original state between each task,FALSE
otherwise. It is recommended to only setreset_options = TRUE
ifreset_packages
is alsoTRUE
because packages sometimes rely on options they set at loading time.- garbage_collection
TRUE
to run garbage collection between tasks,FALSE
to skip.- launch_max
Positive integer of length 1, maximum allowed consecutive launch attempts which do not complete any tasks. Enforced on a worker-by-worker basis. The futile launch count resets to back 0 for each worker that completes a task. It is recommended to set
launch_max
above 0 because sometimes workers are unproductive under perfectly ordinary circumstances. Butlaunch_max
should still be small enough to detect errors in the underlying platform.- tls
A TLS configuration object from
crew_tls()
.- r_arguments
Optional character vector of command line arguments to pass to
Rscript
(non-Windows) orRscript.exe
(Windows) when starting a worker. Example:r_arguments = c("--vanilla", "--max-connections=32")
.- local_log_directory
Either
NULL
or a character of length 1 with the file path to a directory to write worker-specific log files with standard output and standard error messages. Each log file represents a single instance of a running worker, so there will be more log files if a given worker starts and terminates a lot. Set toNULL
to suppress log files (default).- local_log_join
Logical of length 1. If
TRUE
,crew
will write standard output and standard error to the same log file for each worker instance. IfFALSE
, then they these two streams will go to different log files with informative suffixes.
See also
Other plugin_local:
crew_class_launcher_local
,
crew_controller_local()
Examples
if (identical(Sys.getenv("CREW_EXAMPLES"), "true")) {
client <- crew_client()
client$start()
launcher <- crew_launcher_local(name = client$name)
launcher$start(sockets = client$summary()$socket)
launcher$launch(index = 1L)
task <- mirai::mirai("result", .compute = client$name)
mirai::call_mirai_(task)
task$data
client$terminate()
}