View Source Again

A library for retrying work again... and again... and again...

Usage

# Create a retry policy
alias Again.{Backoff, Clock, SystemClock, Termination}

policy =
  %Again.Policy{
    clock: SystemClock,
    backoff: Backoff.exponential_backoff(100),
    termination: Termination.limit_attempts(5)
  }

# Use it
Again.retry(policy, fn ->
  do_something_that_might_fail()
end)

TODO

A couple of things before this library is ready for primetime:

  • Better classification for error + success results
  • Observability into execution state / Logger integration