module Worker = Make(T)
The Worker module has specialized functions to spawn workers and run functions on
workers.
S : Worker_spectype tA Worker.t type is defined with bin_io so it is possible to create functions
that take a worker as an argument.
include sig ... endval bin_t : t Bin_prot.Type_class.tval bin_read_t : t Bin_prot.Read.readerval __bin_read_t__ : (int ‑> t) Bin_prot.Read.readerval bin_reader_t : t Bin_prot.Type_class.readerval bin_size_t : t Bin_prot.Size.sizerval bin_write_t : t Bin_prot.Write.writerval bin_writer_t : t Bin_prot.Type_class.writerval bin_shape_t : Bin_prot.Shape.tval sexp_of_t : t ‑> Base.Sexp.tmodule Id : Core.Identifiableval serve : ?max_message_size:int ‑> ?handshake_timeout:Core.Time.Span.t ‑> ?heartbeat_config:Async.Rpc.Connection.Heartbeat_config.t ‑> worker_state_init_arg ‑> worker Async.Deferred.tserve arg will start an Rpc server in process implementing all the functions
of the given worker.
module Connection : sig ... endmodule Shutdown_on : functor (M : Core.T1) -> sig ... endtype 'a with_spawn_args = ?where:Executable_location.t ‑> ?name:string ‑> ?env:(string * string) list ‑> ?connection_timeout:Core.Time.Span.t ‑> ?cd:string ‑> on_failure:(Core.Error.t ‑> unit) ‑> 'aThe various spawn functions create a new worker process that implements the
functions specified in the Worker_spec.
name will be attached to certain error messages and is useful for debugging.
env extends the environment of the spawned worker process.
connection_timeout is used for various internal timeouts. This may need be to
increased if the init arg is really large (serialization and deserialization
takes more than connection_timeout).
cd changes the current working directory of a spawned worker process.
shutdown_on specifies when a worker should shut itself down.
on_failure exn will be called in the spawning process upon the worker process
raising a background exception. All exceptions raised before functions return will be
returned to the caller. on_failure will be called in Monitor.current () at the
time of this spawn call. The worker initiates shutdown upon sending the exception
to the master process.
worker_state_init_arg (below) will be passed to init_worker_state of the given
Worker_spec module. This initializes a persistent worker state for all connections
to this worker.
val spawn : (?umask:int ‑> shutdown_on:'a Shutdown_on(Core.Or_error).t ‑> redirect_stdout:Rpc_parallel__.Fd_redirection.t ‑> redirect_stderr:Rpc_parallel__.Fd_redirection.t ‑> worker_state_init_arg ‑> 'a) with_spawn_argsThe spawned worker process daemonizes. Any initialization errors that wrote to
stderr (Rpc_parallel internal initialization, not user initialization code) will be
captured and rewritten to the spawning process's stderr with the prefix
"WORKER %NAME% STDERR".
redirect_stdout and redirect_stderr specify stdout and stderr of the worker
process.
val spawn_exn : (?umask:int ‑> shutdown_on:'a Shutdown_on(Core.Monad.Ident).t ‑> redirect_stdout:Rpc_parallel__.Fd_redirection.t ‑> redirect_stderr:Rpc_parallel__.Fd_redirection.t ‑> worker_state_init_arg ‑> 'a) with_spawn_argsmodule Spawn_in_foreground_result : sig ... endval spawn_in_foreground : (shutdown_on:'a Shutdown_on(Spawn_in_foreground_result).t ‑> worker_state_init_arg ‑> 'a) with_spawn_argsSimilar to spawn but the worker process does not daemonize. If the process was
spawned on a remote host, the ssh Process.t is returned.
module Spawn_in_foreground_exn_result : sig ... endval spawn_in_foreground_exn : (shutdown_on:'a Shutdown_on(Spawn_in_foreground_exn_result).t ‑> worker_state_init_arg ‑> 'a) with_spawn_argsval shutdown : t ‑> unit Core.Or_error.t Async.Deferred.tshutdown attempts to connect to a worker. Upon success, Shutdown.shutdown 0 is
run in the worker. If you want strong guarantees that a worker did shutdown, consider
using spawn_in_foreground and inspecting the Process.t.
module Deprecated : sig ... end