#exponential-backoff #backoff #retry #exponential #control-flow

ease-off

An easy, opinionated exponential backoff implementation

6 releases

new 0.1.6 Nov 9, 2024
0.1.5 Oct 23, 2024
0.1.0 Sep 25, 2024

#6 in #exponential-backoff

Download history 152/week @ 2024-09-23 92/week @ 2024-09-30 8/week @ 2024-10-07 368/week @ 2024-10-14 152/week @ 2024-10-21 53/week @ 2024-10-28 564/week @ 2024-11-04

1,138 downloads per month

MIT/Apache

42KB
637 lines

ease-off

An easy, opinionated exponential backoff implementation.

Benefits over other implementations:

  • More flexible control flow (you implement the loop yourself).
  • Opinionated but sane defaults
    • Explicitly choose deadline, timeout or unlimited, so you know exactly what's going to happen.
  • RetryableError trait allows for more reusable code.
  • Immutable, const-friendly core API for when stateful backoffs aren't appropriate.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.


lib.rs:

An easy, opinionated exponential backoff implementation.

Benefits over other implementations:

  • More flexible control flow (you implement the loop yourself).
  • Opinionated but sane defaults
    • Explicitly choose deadline, timeout or unlimited, so you know exactly what's going to happen.
  • RetryableError trait allows for more reusable code.
  • Immutable core API for when stateful backoffs aren't appropriate.

Examples

Blocking Operation

(Source: examples/blocking.rs)

Async Operation (Tokio)

(Source: examples/tokio.rs)

Dependencies

~0.5–11MB
~123K SLoC