Lightning.Extensions.RunQueue behaviour (Lightning v2.16.0)

View Source

Extension to customize the scheduling of workloads on Lightning Runtime.

Summary

Callbacks

claim(demand, worker_name, queues)

@callback claim(
  demand :: non_neg_integer(),
  worker_name :: String.t() | nil,
  queues :: [String.t()]
) :: {:ok, [Lightning.Run.t()]}

dequeue(run)

@callback dequeue(run :: Lightning.Run.t()) :: {:ok, Lightning.Run.t()}

enqueue(run)

@callback enqueue(run :: Ecto.Multi.t()) ::
  {:ok, %{required(Ecto.Multi.name()) => any()}}
  | {:error, Ecto.Multi.name(), any(), %{required(Ecto.Multi.name()) => any()}}

enqueue_many(runs)

@callback enqueue_many(runs :: Ecto.Multi.t()) ::
  {:ok, %{required(Ecto.Multi.name()) => any()}}
  | {:error, Ecto.Multi.name(), any(), %{required(Ecto.Multi.name()) => any()}}