Task.Supervisor

A tasks supervisor.

This module defines a supervisor which can be used to dynamically supervise tasks. Behind the scenes, this module is implemented as a :simple_one_for_one supervisor where the workers are temporary (i.e. they are not restarted after they die).

The functions in this module allow tasks to be spawned and awaited from a supervisor, similar to the functions defined in the Task module.

Name Registration

A Task.Supervisor is bound to the same name registration rules as a GenServer. Read more about it in the GenServer docs.

Source

Summary

async(supervisor, fun)

Starts a task that can be awaited on

async(supervisor, module, fun, args)

Starts a task that can be awaited on

children(supervisor)

Returns all children pids

start_child(supervisor, fun)

Starts a task as child of the given supervisor

start_child(supervisor, module, fun, args)

Starts a task as child of the given supervisor

start_link(opts \\ [])

Starts a new supervisor

terminate_child(supervisor, pid)

Terminates the child with the given pid

Functions

async(supervisor, fun)

Specs:

Starts a task that can be awaited on.

The supervisor must be a reference as defined in Task.Supervisor. For more information on tasks, check the Task module.

Source
async(supervisor, module, fun, args)

Specs:

Starts a task that can be awaited on.

The supervisor must be a reference as defined in Task.Supervisor. For more information on tasks, check the Task module.

Source
children(supervisor)

Specs:

Returns all children pids.

Source
start_child(supervisor, fun)

Specs:

Starts a task as child of the given supervisor.

Note that the spawned process is not linked to the caller, but only to the supervisor. This command is useful in case the task needs to perform side-effects (like I/O) and does not need to report back to the caller.

Source
start_child(supervisor, module, fun, args)

Specs:

Starts a task as child of the given supervisor.

Similar to start_child/2 except the task is specified by the given module, fun and args.

Source
start_link(opts \\ [])

Specs:

Starts a new supervisor.

The supported options are:

  • :name - used to register a supervisor name, the supported values are described under the Name Registration section in the GenServer module docs;

  • :restart - the restart strategy, may be :temporary (the default), :transient or :permanent. Check Supervisor.Spec for more info. Defaults to temporary as most tasks can’t be effectively restarted after a crash;

  • :shutdown - :brutal_kill if the tasks must be killed directly on shutdown or an integer indicating the timeout value, defaults to 5000 milliseconds;

  • :max_restarts and :max_seconds - as specified in Supervisor.Spec.supervise/2;
Source
terminate_child(supervisor, pid)

Specs:

Terminates the child with the given pid.

Source