Retry

class laminar.configurations.layers.Retry(attempts: int = 1, delay: float = 0.1, backoff: float = 2.0, jitter: float = 0.1)

Bases: object

Configure a Layer to retry on failure using exponential backoff.

Notes

Computes the retry backoff with:

>>> sleep = <delay> * (<backoff> ** (attempt - 1))
>>> sleep = sleep + random(0, sleep * <jitter>)

Usage:

@Flow.register(retry=Retry(...))

Methods

sleep

Exponentially backoff before retrying a layer.

Attributes

attempts

Number of retires to attempt before failing

backoff

Backoff factor to multiply delay with

delay

Base number of seconds to wait before retrying

jitter

Factor to randomize delay.

__init__(attempts: int = 1, delay: float = 0.1, backoff: float = 2.0, jitter: float = 0.1)
attempts : int = 1

Number of retires to attempt before failing

backoff : float = 2.0

Backoff factor to multiply delay with

delay : float = 0.1

Base number of seconds to wait before retrying

jitter : float = 0.1

Factor to randomize delay.

async sleep(*, layer: Layer, attempt: int) None

Exponentially backoff before retrying a layer.

Parameters
layer: Layer

Layer being retried.

attempt: int

Attempt the layer is on.