Retry اجرای دوباره عملیاتی است که به دلیل خطای موقت شکست خورده، مانند اختلال کوتاه شبکه. تعداد تلاش‌ها و فاصله میان آن‌ها باید محدود باشد.

Exponential Backoff و Jitter رایج‌اند. Retry برای خطای دائمی یا عملیات غیرهم‌توان می‌تواند زیان‌بار باشد.

برای خطای موقت HTTP می‌توان Retry با Exponential Backoff و Jitter استفاده کرد. اما Retry درخواست پرداخت بدون Idempotency Key ممکن است خطرناک باشد.

درک تفاوت این موضوع با صف پیام و مسیج بروکر به انتخاب راهکار مناسب‌تر کمک می‌کند.

مثال Backoff محدود

import time
for attempt in range(4):
    try:
        process_message()
        break
    except TemporaryError:
        if attempt == 3:
            raise
        time.sleep(2 ** attempt)

Retry برای خطای موقت مناسب است، اما درخواست پرداخت بدون کلید آیدمپوتنسی ممکن است دوبار اجرا شود. برای جلوگیری از موج ترافیک، Jitter و سقف تلاش نیز لازم است.