Start here. This is the direct spoken answer to practice first.
Overview
Combines selective Celery retries with bounded backoff, idempotent effects, and a terminal failure path.
I retry only failures that are plausibly temporary, such as a timeout or rate limit, and let permanent validation errors fail immediately. Celery can schedule retries with a countdown or exponential backoff, but I set a maximum attempt count and add jitter so many tasks do not retry together. The task must be idempotent because the original attempt may have completed an effect before its result was lost.