Packages
tarearbol
0.4.1
1.12.0
1.11.2
1.11.1
1.11.0
1.10.4
1.10.3
1.10.2
1.10.0
1.9.102
1.9.101
1.9.100
1.9.99
1.9.11
1.9.10
1.9.9
1.9.8
1.9.7
1.9.6
1.9.5
1.9.4
1.9.3
1.9.2
1.9.1
1.9.0
1.8.2
1.8.1
1.8.0
1.7.0
1.6.8
1.6.7
1.6.6
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.0
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.0
1.2.1
1.2.0
1.1.2
1.1.1
1.1.0
1.0.4
1.0.3
1.0.2
1.0.0
0.99.11
0.99.10
0.99.9
0.99.8
0.99.7
0.99.6
0.99.4
0.99.3
0.99.2
0.99.1
0.99.0
0.14.1
0.14.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.0
0.10.0
0.9.6
0.9.5
0.9.3
0.9.2
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.0
0.6.0
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.2
0.2.1
0.2.0
0.1.0
The supervised tree of tasks, simplifying the process of handling: - recurrent tasks - retried tasks - long tasks - etc
Current section
Files
Jump to
Current section
Files
lib/tarearbol.ex
defmodule Tarearbol do
@moduledoc """
`Tarearbol` module provides an interface to run tasks in easy way.
## Examples
iex> result = Tarearbol.ensure(fn -> raise "¡?" end, attempts: 1, raise: false)
iex> {:error, %{job: _job, outcome: outcome}} = result
iex> {error, _stacktrace} = outcome
iex> error
%RuntimeError{message: "¡?"}
"""
@spec ensure((Function.t | {Module.t, Atom.t, List.t}), Keyword.t) :: ({:error, any} | {:ok, any})
def ensure(job, opts \\ []), do: Tarearbol.Job.ensure(job, opts)
@spec ensure!((Function.t | {Module.t, Atom.t, List.t}), Keyword.t) :: ({:error, any} | {:ok, any})
def ensure!(job, opts \\ []), do: Tarearbol.Job.ensure!(job, opts)
@spec ensure_all_streamed([Function.t | {Module.t, Atom.t, List.t}], Keyword.t) :: [Stream.t]
def ensure_all_streamed(jobs, opts \\ []), do: Tarearbol.Jobs.ensure_all_streamed(jobs, opts)
@spec ensure_all([Function.t | {Module.t, Atom.t, List.t}], Keyword.t) :: [{:error, any} | {:ok, any}]
def ensure_all(jobs, opts \\ []), do: Tarearbol.Jobs.ensure_all(jobs, opts)
@spec run_in((Function.t | {Module.t, Atom.t, List.t}), (Atom.t | Integer.t | Float.t), Keyword.t) :: Task.t
def run_in(job, interval, opts \\ []), do: Tarearbol.Errand.run_in(job, interval, opts)
@spec run_at((Function.t | {Module.t, Atom.t, List.t}), (DateTime.t | String.t), Keyword.t) :: Task.t
def run_at(job, at, opts \\ []), do: Tarearbol.Errand.run_at(job, at, opts)
@spec spawn((Function.t | {Module.t, Atom.t, List.t}), Keyword.t) :: Task.t
def spawn(job, opts \\ []), do: Tarearbol.Errand.spawn(job, opts)
@spec drain() :: [{:error, any} | {:ok, any}]
def drain() do
jobs = Tarearbol.Application.jobs
Tarearbol.Application.kill()
for {job, opts, _at} <- jobs, do: Tarearbol.ensure(job, opts)
end
end