Belay.Crons (Belay v2.0.0)

Copy Markdown View Source

Runtime cron management, persisted in the database, fired leaderlessly by every node with per-slot dedup — change schedules without deploys.

Belay.Crons.put(MyApp.Belay, "digest", "0 8 * * 1-5", MyApp.Digest,
  input: %{"edition" => "morning"})

Belay.Crons.pause(MyApp.Belay, "digest")
Belay.Crons.resume(MyApp.Belay, "digest")
Belay.Crons.delete(MyApp.Belay, "digest")

Dynamic entries are merged with the static crons: config on every scheduler tick; a dynamic entry with the same name overrides the static one.

Summary

Functions

Delete a dynamic cron entry.

List dynamic cron entries.

Pause a dynamic cron entry.

Create or update a cron entry. The expression is validated eagerly.

Resume a dynamic cron entry.

Functions

delete(name, cron_name)

@spec delete(GenServer.name(), String.t()) :: :ok

Delete a dynamic cron entry.

list(name)

@spec list(GenServer.name()) :: [map()]

List dynamic cron entries.

pause(name, cron_name)

@spec pause(GenServer.name(), String.t()) :: :ok

Pause a dynamic cron entry.

put(name, cron_name, expression, worker, opts \\ [])

@spec put(GenServer.name(), String.t(), String.t(), module(), keyword()) :: :ok

Create or update a cron entry. The expression is validated eagerly.

resume(name, cron_name)

@spec resume(GenServer.name(), String.t()) :: :ok

Resume a dynamic cron entry.