SuperAPI AI 工具集

evernote-rate-limits

编程与开发

查看项目

更新于 10-15 23:25

技能介绍

用途:在 Evernote 集成中处理 API 限流。Evernote 按 API key、按用户限流,超限时返回 EDAMSystemException,errorCode 为 RATE_LIMIT_REACHED,并给出 rateLimitDuration(需等待的秒数)。生产集成需优雅处理。

主要能力:

  1. 限流处理器:捕获 EDAMSystemException,读取 rateLimitDuration,等待后重试,并限制重试次数避免死循环。示例:async function withRateLimitRetry(operation, maxRetries = 3),当 error.rateLimitDuration 存在且未达最大重试时,等待 rateLimitDuration * 1000 毫秒后重试。
  2. 限流客户端包装:包装 NoteStore,在调用间加入可配置最小延迟,并用请求队列防止突发,记录请求时间戳用于监控。示例构造 RateLimitedClient(noteStore, minDelayMs = 100)。
  3. 批量操作:顺序处理并在每项之间延迟;遇限流则等待并重试失败项;通过回调报告进度,收集成功与失败。
  4. 避免限流:缓存 listNotebooks() 与 listTags() 结果;列表场景用 findNotesMetadata() 代替 getNote();在 NotesMetadataResultSpec 中只请求所需字段;用 sync chunks 批量读取替代逐条获取。
  5. 限流监控:统计请求数、限流命中次数、平均响应时间和等待时间,定期记录日志以发现优化点。

使用方式:需先完成 Evernote SDK 设置,理解 async/await,并实现错误处理。按上述步骤组合限流重试、客户端包装与批量处理。

错误处理参考:首次限流等待 rateLimitDuration 秒后重试;反复限流则增大 minDelayMs、减小批量;同步中被限流则暂停、等待、从上次 USN 恢复;初始设置时被限流可向 Evernote 支持申请提升限流。

适用场景:批量导出笔记、高吞吐同步等。示例:导出 1000 条笔记,每次调用间隔 200 毫秒并在限流时自动重试;高吞吐同步用 getFilteredSyncChunk() 每次取 100 条,替代逐条 getNote(),可大幅减少调用次数。

限制:资料未提供具体平台支持范围、收费信息、价格或效果保证;完整限流器、批处理器、监控面板与优化示例需参考 Implementation Guide。