ExSchedule v0.1.0 ExSchedule

Module providing a way to declare actions happening on an interval basis.

Example

defmodule Quiqup.Schedules.Developer do
  use ExSchedule

  schedule every: {6, :hours} do
    Developer.eat(:pizza)
  end

  schedule every: :hour, first_in: {20, :minutes} do
    Developer.drink(:coffee)
  end
end

Supported options:

Intervals

every: The interval on which to run the task

first_in: How much time to wait before the first run, defaults to 0

Examples

schedule every: :millisecond, do: Task.execute # every millisecond
schedule every: :second, do: Task.execute      # every second
schedule every: :minute, do: Task.execute      # every minute
schedule every: :hour, do: Task.execute        # every hour
schedule every: :day, do: Task.execute         # every day

schedule every: {2, :milliseconds}, do: Task.execute # every 2 milliseconds
schedule every: {2, :seconds}, do: Task.execute      # every 2 seconds
schedule every: {2, :minutes}, do: Task.execute      # every 2 minutes
schedule every: {2, :hours}, do: Task.execute        # every 2 hours
schedule every: {2, :days}, do: Task.execute         # every 2 days

schedule every: {2, :hours}, first_in: 0, do:
  Task.execute # every 2 hours first in 0 seconds
end

schedule every: {2, :hours}, first_in: {20, :minutes} do
  Task.execute # every 2 hours first in 20 minutes
end

Failure handling

:max_failures - Number of times to fail for the task process to be restarted, defaults to :infinity

Examples

schedule every: {2, :days}, max_failures: 5, do: something

Link to this section Summary

Functions

A macro that defines a recurrent task

Link to this section Functions

Link to this macro schedule(options, list) (macro)
schedule(list(), list()) :: tuple()

A macro that defines a recurrent task