Как реализовать Retry паттерн в Node.js?

Middle
311 просмотров
AFK Offer AI

Retry с exponential backoff: async function withRetry(fn, { attempts = 3, delay = 1000 } = {}) { for (let i = 0; i < attempts; i++) { try { return await fn(); } catch (err) { if (i === attempts - 1) throw err; await sleep(delay * Math.pow(2, i) + Math.random() * 1000); } } }. Jitter (случайность) важен чтобы не синхронизировать retry storm. p-retry библиотека удобна. Что стоит ретраить: network errors, 429, 503. Не ретраить: 4xx (клиентские ошибки), уже применённые операции (без idempotency key).

Следующий вопрос

Что такое Socket.io и как он работает?