我构建了一个重试库,因为我不断丢失失败的 API 调用
现有的重试库通常在重试次数耗尽后直接抛出错误,导致关于失败请求的信息丢失,这使得诊断问题(例如静默丢弃的 Webhook)变得困难。作者开发了 smart-retry,一个旨在解决此问题的 TypeScript 库。Smart-retry 为 Axios 和 Fetch 客户端提供无缝支持,超越了通用的函数包装器。其关键特性是:当所有重试均耗尽时,自动将失败的请求记录到磁盘。该日志包含 URL、方法、请求头和请求体等关键细节,便于后续检查或重放。相比之下,传统库在抛出错误时会丢失这些信息。该库默认仅对网络错误、超时、429 响应以及 5xx 响应进行重试,但此行为可自定义。作者正在寻求贡献以改进该库,具体包括:修复 Axios 超时错误处理、增加测试覆盖率、实现指数退避的最大延迟、减少公共类型的使用,以及记录日志轮转的文档。设置说明可在 CONTRIBUTING.md 文件中找到,欢迎反馈。