DEV Community на русском
Подписаться
Я создал библиотеку повторных попыток, потому что постоянно терял неудачные вызовы API
Существующие библиотеки повторных попыток часто просто выбрасывают ошибку после исчерпания попыток, что приводит к потере информации о неудачных запросах. Это затрудняет диагностику проблем, таких как незаметно отброшенные вебхуки. Автор разработал smart-retry, библиотеку TypeScript, предназначенную для решения этой проблемы. Smart-retry предлагает поддержку "из коробки" для клиентов Axios и Fetch, выходя за рамки общих оберток функций. Ключевой особенностью является автоматическое журналирование неудачных запросов на диск при исчерпании всех повторных попыток. Этот журнал включает важные детали, такие как URL, метод, заголовки и тело запроса, что позволяет проводить последующий анализ или повторное выполнение. В отличие от этого, традиционные библиотеки теряют эту информацию при выбрасывании ошибки. Библиотека по умолчанию повторяет только сетевые ошибки, тайм-ауты, ответы 429 и 5xx, но это поведение можно настроить. Автор ищет вклад в улучшение библиотеки, в частности, для исправления обработки ошибок тайм-аута Axios, добавления тестового покрытия, реализации максимальной задержки для экспоненциальной задержки, сокращения использования публичных типов и документирования ротации журналов. Инструкции по настройке доступны в файле CONTRIBUTING.md, и обратная связь приветствуется.