GenWorker v0.0.7 GenWorker behaviour View Source
Generic Worker behavior that helps to run task at a specific time with a specified frequency.
Usage
Define you worker module
defmodule MyWorker do
use GenWorker, run_at: [hour: 13, minute: 59], run_each: [days: 1]
def run(_prev_args) do
IO.puts "MyWorker run every day at 13:59"
end
end
Supported options
run_at
– keyword list with integers values. Supported keys:
:year
, :month
, :day
, :hour
, :minute
, :second
, :microsecond
.
Or you can use map for multiple runs:
use GenWorker, run_at: %{"some_key" => [hour: 13, minute: 59], "other_key" => [hour: 14, minute: 00]}, run_each: [days: 1]
run_each
- keyword list with integers values. Supported keys: :years
, :months
, :weeks
, :days
, :hours
, :minutes
, :seconds
, :milliseconds
. Default is [days: 1]
timezone
- valid timezone. :utc
- by default. Receive full list of timezones call Timex.timezones/0
You need to implement callback function:
run/1
that defines worker business logic
### Add worker to the application supervision tree:
def start(_type, _args) do
import Supervisor.Spec, warn: false
children = [
worker(MyWorker, [])
# ...
]
opts = [strategy: :one_for_one, name: MyApp.Supervisor]
Supervisor.start_link(children, opts)
end
Link to this section Summary
Callbacks
Callback that should implement task business logic that must be securely processed.
Link to this section Callbacks
Callback that should implement task business logic that must be securely processed.