Packages
quantum
2.2.6
3.5.3
3.5.2
retired
3.5.1
retired
3.5.0
3.4.0
3.3.0
3.2.0
3.1.0
3.0.2
3.0.1
3.0.0
3.0.0-rc.3
3.0.0-rc.2
3.0.0-rc.1
2.4.0
2.3.4
2.3.3
2.3.2
2.3.1
retired
2.3.0
retired
2.2.7
2.2.6
2.2.5
retired
2.2.4
retired
2.2.3
retired
2.2.2
retired
2.2.1
retired
2.2.0
retired
2.1.3
retired
2.1.2
retired
2.1.1
retired
2.1.0
retired
2.1.0-beta.1
retired
2.0.4
retired
2.0.3
retired
2.0.2
retired
2.0.1
retired
2.0.0
retired
2.0.0-beta.2
retired
2.0.0-beta.1
retired
1.9.3
retired
1.9.2
retired
1.9.1
retired
1.9.0
retired
1.8.1
retired
1.8.0
retired
1.7.1
retired
1.7.0
retired
1.6.1
retired
1.6.0
retired
1.5.0
retired
1.4.0
retired
1.3.2
retired
1.3.1
retired
1.3.0
retired
1.2.4
retired
1.2.3
retired
1.2.2
retired
1.2.1
retired
1.2.0
retired
1.1.0
retired
1.0.4
retired
1.0.3
retired
1.0.2
retired
1.0.1
retired
1.0.0
retired
Cron-like job scheduler for Elixir.
Current section
Files
Jump to
Current section
Files
lib/quantum/run_strategy/all.ex
defmodule Quantum.RunStrategy.All do
@moduledoc """
Run job on all node of the node list
If the node list is `:cluster`, all nodes of the cluster will be used.
### Mix Configuration
config :my_app, MyApp.Scheduler,
jobs: [
# Run on all nodes in cluster
[schedule: "* * * * *", run_strategy: {Quantum.RunStrategy.All, :cluster}],
# Run on all nodes of given list
[schedule: "* * * * *", run_strategy: {Quantum.RunStrategy.All, [:"node@host1", :"node@host2"]}],
]
"""
@type t :: %__MODULE__{nodes: [Node.t() | :cluster]}
defstruct nodes: nil
@behaviour Quantum.RunStrategy
alias Quantum.Job
@spec normalize_config!([Node.t()] | :cluster) :: t
def normalize_config!(nodes) when is_list(nodes) do
%__MODULE__{nodes: Enum.map(nodes, &normalize_node/1)}
end
def normalize_config!(:cluster), do: %__MODULE__{nodes: :cluster}
@spec normalize_node(Node.t() | binary) :: Node.t()
defp normalize_node(node) when is_atom(node), do: node
defp normalize_node(node) when is_binary(node), do: String.to_atom(node)
defimpl Quantum.RunStrategy.NodeList do
@spec nodes(Quantum.RunStrategy.All.t(), Job.t()) :: [Node.t()]
def nodes(%Quantum.RunStrategy.All{nodes: :cluster}, _) do
[node() | Node.list()]
end
def nodes(%Quantum.RunStrategy.All{nodes: nodes}, _) do
nodes
end
end
end