simple_retry

Version, currently 1.1.13 versions

github.com/spider-gazelle/simple_retry

a tool for retrying code blocks

8 stars
0 dependents
License: MIT

Installation

# Add this to your shard.yml
dependencies:
  simple_retry:
    github: spider-gazelle/simple_retry
    version: ~> 1.1.1

Then run:

shards install

shard.yml

Crystal
>= 0.36.1

Dependencies

Development Dependencies

  • ameba*github: crystal-ameba/amebadev

README

[![Build Status](https://travis-ci.com/spider-gazelle/simple_retry.svg?branch=master)](https://travis-ci.com/github/spider-gazelle/simple_retry)


# Simple Retry

A library for managing blocks of code that you might want to retry when an error occurs.


## Installation

1. Add the dependency to your `shard.yml`:

   ```yaml
   dependencies:
     simple_retry:
       github: spider-gazelle/simple_retry
   ```

2. Run `shards install`


## Usage

```crystal
require "simple_retry"

SimpleRetry.try_to do
  # Something that should succeed eventually
  num = rand(10)
  raise "bad number #{num}" if num < 5

  # Return the number
  num
end
```

There are a number of options you can use to customise

```crystal
require "simple_retry"

SimpleRetry.try_to(
  # Runs the block at most 5 times
  max_attempts: 5,
  # Will always stop retrying on these errors
  raise_on: DivisionByZeroError | ArgumentError,
  # Will only retry on these errors
  retry_on: Exception,
  # Initial delay time after first retry
  base_interval: 10.milliseconds,
  # Exponentially increase delay up to this period
  max_interval: 10.seconds,
  # Adjust the exponential growth by a random amount
  randomise: 10.milliseconds
) do |run_count : UInt64, last_error : Exception?, next_delay_time : Time::Span|
  # Something that should succeed
end
```