Ponowienia z przerwą
Definicja
Retry to ponowienie żądania po błędzie. Backoff to plan tych ponowień. Każda kolejna próba następuje po dłuższej przerwie.
Co to w zasadzie jest?
Gdy coś chwilowo nie działa, warto spróbować jeszcze raz. Nie warto jednak wysyłać wielu prób naraz, bo to może przeciążyć system. Backoff mówi: spróbuj ponownie, ale z przerwą. Na przykład po 1, 2 i 4 sekundach. To ważne w AI, bo narzędzia i API czasem mają krótkie przerwy lub limity.
Praktyczne zastosowania (konkretne scenariusze)
Scenariusz 1: Wywołanie narzędzia przez API
- Cel: przy błędzie 503 ponów próbę z przerwą.
- Wejście: błąd chwilowy albo limit API.
- Kroki: odczekaj -> ponów próbę -> przerwij po limicie.
- Rezultat: większa odporność na krótkie awarie.
- Zabezpieczenie: maksymalna liczba prób i logowanie.
Scenariusz 2: Pobieranie źródła
- Cel: ponów próbę, jeśli minął limit czasu.
- Wejście: błąd chwilowy albo limit API.
- Kroki: odczekaj -> ponów próbę -> przerwij po limicie.
- Rezultat: większa odporność na krótkie awarie.
- Zabezpieczenie: maksymalna liczba prób i logowanie.
Scenariusz 3: Agent
- Cel: jeśli narzędzie nie działa, spróbuj raz, a potem poproś o decyzję człowieka.
- Wejście: błąd chwilowy albo limit API.
- Kroki: odczekaj -> ponów próbę -> przerwij po limicie.
- Rezultat: większa odporność na krótkie awarie.
- Zabezpieczenie: maksymalna liczba prób i logowanie.
Ryzyka i jak je ograniczać
Ryzyko 1: Pętle ponowień i koszty
- Ryzyko: pętle ponowień i koszty.
- Jak ograniczać: limit ponowień, limit czasu i limity zapytań.
Ryzyko 2: Tworzenie duplikatów przy ponowieniu
- Ryzyko: tworzenie duplikatów przy ponowieniu.
- Jak ograniczać: stosuj Idempotencję.
Ryzyko 3: Ukrywanie problemów („jakoś działa”)
- Ryzyko: ukrywanie problemów („jakoś działa”).
- Jak ograniczać: logi, alerty i monitoring.
Mapa powiązań
- API → retry/backoff to praktyka przy API.
- Timeout → retry nie ma sensu bez timeoutów.
- Idempotencja → bezpieczne ponawianie.
- Observability → widoczność błędów i ponowień.
- Mini-przepływ:
Błąd → czekaj → ponów → sukces / eskalacja
Diagram
flowchart LR
A[Błąd]
B[Czekaj]
C[Ponów]
D[Sukces]
E[Eskalacja]
A --> B --> C
C --> D
C --> E
Diagram pokazuje, że po błędzie system ponawia operację z przerwą, zamiast obciążać usługę natychmiastowymi próbami.