Ben Zehavi
04/10/2024, 1:39 AMMarvin
04/10/2024, 1:40 AMexponential_backoff
utility provided by Prefect. Here's how you would use it for a task with retries:
python
from prefect import task
from prefect.tasks import exponential_backoff
@task(retries=3, retry_delay_seconds=exponential_backoff(backoff_factor=10))
def some_task_with_exponential_backoff_retries():
# Your task logic here
...
In the example above, the task is set to retry up to 3 times (with retries), with a backoff_factor
of 10 seconds.
If you also want to add jitter to prevent many tasks from all retrying at the exact same time, you can use the retry_jitter_factor
option. Here is an example of a task with exponential backoff and jitter:
python
from prefect import task
from prefect.tasks import exponential_backoff
@task(
retries=3,
retry_delay_seconds=exponential_backoff(backoff_factor=10),
retry_jitter_factor=1, # Adding jitter;
)
def some_task_with_exponential_backoff_retries_and_jitter():
# Your task logic here
...
With retry_jitter_factor
set to 1, the retry delay will vary up to a maximum of double the base delay time before each retry.
For more detailed documentation on tasks and exponential backoff, visit Prefect Docs.