1.4 KiB
1.4 KiB
title, impact, impactDescription, tags
| title | impact | impactDescription | tags |
|---|---|---|---|
| Configure Step Retries for Transient Failures | HIGH | Automatic retries handle transient failures without manual code | step, retry, exponential-backoff, resilience |
Configure Step Retries for Transient Failures
Steps can automatically retry on failure with exponential backoff. This handles transient failures like network issues.
Incorrect (manual retry logic):
@DBOS.step()
def fetch_data():
# Manual retry logic is error-prone
for attempt in range(3):
try:
return requests.get("https://api.example.com").json()
except Exception:
if attempt == 2:
raise
time.sleep(2 ** attempt)
Correct (built-in retries):
@DBOS.step(retries_allowed=True, max_attempts=10, interval_seconds=1.0, backoff_rate=2.0)
def fetch_data():
# Retries handled automatically
return requests.get("https://api.example.com").json()
Retry parameters:
retries_allowed: Enable automatic retries (default: False)max_attempts: Maximum retry attempts (default: 3)interval_seconds: Initial delay between retries (default: 1.0)backoff_rate: Multiplier for exponential backoff (default: 2.0)
With defaults, retry delays are: 1s, 2s, 4s, 8s, 16s...
Reference: Configurable Retries