Create an R6
object to submit tasks and
launch workers on local processes.
crew_controller_local(
name = NULL,
workers = 1L,
host = "127.0.0.1",
port = NULL,
tls = crew::crew_tls(),
tls_enable = NULL,
tls_config = 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,
local_log_directory = NULL,
local_log_join = TRUE
)
Name of the client object. If NULL
, a name is automatically
generated.
Integer, maximum number of parallel workers to run.
IP address of the mirai
client to send and receive tasks.
If NULL
, the host defaults to the local IP address.
TCP port to listen for the workers. If NULL
,
then an available ephemeral port is automatically chosen.
A TLS configuration object from crew_tls()
.
Deprecated on 2023-09-15 in version 0.4.1.
Use argument tls
instead.
Deprecated on 2023-09-15 in version 0.4.1.
Use argument tls
instead.
Number of seconds between
polling intervals waiting for certain internal
synchronous operations to complete,
such as checking mirai::status()
Number of seconds until timing
out while waiting for certain synchronous operations to complete,
such as checking mirai::status()
.
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.
After seconds_launch
seconds, the worker is only
considered alive if it is actively connected to its assign websocket.
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 the idletime
argument of mirai::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.
Soft wall time in seconds.
The timer does not launch until tasks_timers
tasks
have completed.
See the walltime
argument of mirai::daemon()
.
Deprecated on 2023-09-21 in version 0.5.0.9002. No longer necessary.
Maximum number of tasks that a worker will do before
exiting. See the maxtasks
argument of mirai::daemon()
.
crew
does not
excel with perfectly transient workers because it does not micromanage
the assignment of tasks to workers, it is recommended to set
tasks_max
to a value greater than 1.
Number of tasks to do before activating
the timers for seconds_idle
and seconds_wall
.
See the timerstart
argument of mirai::daemon()
.
TRUE
to reset global environment
variables between tasks, FALSE
to leave them alone.
TRUE
to unload any packages loaded during
a task (runs between each task), FALSE
to leave packages alone.
TRUE
to reset global options to their original
state between each task, FALSE
otherwise. It is recommended to
only set reset_options = TRUE
if reset_packages
is also TRUE
because packages sometimes rely on options they set at loading time.
TRUE
to run garbage collection between
tasks, FALSE
to skip.
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. But launch_max
should still be small enough
to detect errors in the underlying platform.
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 to NULL
to suppress
log files (default).
Logical of length 1. If TRUE
, crew
will write
standard output and standard error to the same log file for
each worker instance. If FALSE
, then they these two streams
will go to different log files with informative suffixes.
Other plugin_local:
crew_class_launcher_local
,
crew_launcher_local()
if (identical(Sys.getenv("CREW_EXAMPLES"), "true")) {
controller <- crew_controller_local()
controller$start()
controller$push(name = "task", command = sqrt(4))
controller$wait()
controller$pop()
controller$terminate()
}
Run the code above in your browser using DataLab