Kathikon.Scheduler (Kathikon v0.2.1)

Copy Markdown View Source

Scheduling facade for Kathikon.

Delegates to the configured scheduler adapter (default: Kathikon.Scheduler.BuiltIn).

config :kathikon, scheduler: Kathikon.Scheduler.BuiltIn

Examples

{:ok, job_id} = Kathikon.Scheduler.schedule(MyWorker, %{}, in: 300)
{:ok, schedule_id} = Kathikon.Scheduler.schedule(MyWorker, %{}, cron: "0 * * * *")

See docs/scheduling.md.

Summary

Functions

Cancels a registered recurring schedule.

Fetches a registered recurring schedule by id.

Lists registered schedules from the active adapter.

Schedules a one-time job at a datetime, after a duration, or with a cron expression.

Updates a recurring schedule in place (cron, worker, args, queue, and other opts).

Functions

cancel_schedule(schedule_id)

@spec cancel_schedule(term()) :: :ok | {:error, term()}

Cancels a registered recurring schedule.

Examples

:ok = Kathikon.Scheduler.cancel_schedule(schedule_id)

fetch_schedule(schedule_id)

@spec fetch_schedule(term()) :: {:ok, map()} | {:error, term()}

Fetches a registered recurring schedule by id.

Examples

{:ok, schedule} = Kathikon.Scheduler.fetch_schedule(schedule_id)
schedule.cron

list_schedules(opts \\ [])

@spec list_schedules(keyword()) :: {:ok, [map()]} | {:error, term()}

Lists registered schedules from the active adapter.

Examples

{:ok, schedules} = Kathikon.Scheduler.list_schedules()

schedule(worker, args, opts \\ [])

@spec schedule(module(), map(), keyword()) :: {:ok, term()} | {:error, term()}

Schedules a one-time job at a datetime, after a duration, or with a cron expression.

Options

  • :at — one-time DateTime or NaiveDateTime
  • :in — one-time delay in seconds
  • :cron — recurring 5-field cron expression

Examples

{:ok, job_id} = Kathikon.Scheduler.schedule(MyWorker, %{}, in: 60)

{:ok, schedule_id} =
  Kathikon.Scheduler.schedule(MyWorker, %{"digest" => true}, cron: "0 9 * * *")

update_schedule(schedule_id, opts)

@spec update_schedule(
  term(),
  keyword()
) :: {:ok, map()} | {:error, term()}

Updates a recurring schedule in place (cron, worker, args, queue, and other opts).

Changing :cron resets the last-fired timestamp so the new expression can match on the next tick.

Examples

{:ok, schedule} = Kathikon.Scheduler.update_schedule(schedule_id, cron: "0 10 * * *")