Ogranicz równoległość
Użyj kolejki po stronie klienta z ograniczoną równoległością i wysyłaj każde zadanie za pomocą zwykłego zgodnego żądania. Pozwala to kontrolować obciążenie bez zakładania istnienia serwerowego punktu końcowego do przetwarzania wsadowego.
Tryb przetwarzania wsadowego usługi jest odrębnym kontraktem API: używaj jego ścieżki i treści dopiero po ich opublikowaniu w ustawieniach konta lub specyfikacji.
async function runWithLimit(items, limit, work) {
const results = [];
for (let offset = 0; offset < items.length; offset += limit) {
const group = items.slice(offset, offset + limit);
results.push(...await Promise.all(group.map(work)));
}
return results;
}Kontroluj kolejkę
- Utwórz wewnętrzny identyfikator zadania w sposób deterministyczny i unikatowy w obrębie jednego uruchomienia.
- Podziel zbyt duży zbiór na grupy o rozsądnym rozmiarze.
- Rozróżniaj niepowodzenie jednego elementu od niepowodzenia całej kolejki.
Zbierz wyniki
Powiąż wynik z identyfikatorem wewnętrznym i zachowaj status każdego zadania.
Nie ponawiaj automatycznie wszystkich zadań: po sprawdzeniu idempotencji ponawiaj wyłącznie błędy przejściowe.