修复速率限制(rate limit)错误
在 Make 中,当对某个应用(app)的请求超过其 API 速率限制(rate limit)——即在特定时间内允许的最大请求数(例如每分钟 100 次请求)——时,您会看到 RateLimitError。当其速率限制被超出时,该应用会阻止后续请求,直到指定的时间段过去。例如,请参阅 Google Sheets 的 API 速率限制(rate limits)。速率限制错误常见于具有即时触发器(instant triggers)(例如 Webhooks)的场景(scenario)中,以及在短时间内处理大量记录的应用(例如 Google Sheets 或 Airtable)中,以及在多个场景(scenario)中多次使用的应用中。
本文概述了防止即时场景(instant scenarios)、计划场景(scheduled scenarios)以及这两种类型中出现速率限制错误的策略。
Make 中的速率限制错误对应于 HTTP 429 Too Many Requests 错误代码。虽然 Make 遵循标准错误代码及其定义,但第三方应用可能并不总是符合此标准。
按调度类型划分的策略
当模块(module)返回速率限制错误且不存在错误处理程序时,Make 会根据以下因素进行响应:
* 场景(scenario)调度类型 * 是否启用了 未完成执行(incomplete executions)
下表概述了遇到速率限制错误时所有可能的响应:
调度类型 | 禁用未完成执行(incomplete executions) | 启用未完成执行(incomplete executions)
---|---|---
计划(Scheduled) |
Make 将暂停下一个场景(scenario)运行 20 分钟。
Make 不会重新运行场景(scenario)。
|
Make 将暂停下一个场景(scenario)运行 20 分钟。
Make 使用 指数退避(exponential backoff) 重新运行未完成执行。
即时(Instant) | Make 使用 指数退避(exponential backoff) 从头开始重新运行未完成执行。 | Make 使用 指数退避(exponential backoff) 重新运行未完成执行。
避免速率限制错误的策略取决于场景(scenario)是通过即时触发器(instant triggers)即时接收数据,还是按计划接收数据。
即时场景(instant scenarios)
在即时触发的场景(scenario)中,设置 场景速率限制(scenario rate limit) 来控制场景(scenario)每分钟运行的频率。此策略将请求的突然峰值分散到更长的时间段内,使排队的请求能够以可控的速率处理。
您可以在 Maximum runs to start per minute(每分钟最大启动运行次数)字段中配置场景(scenario)速率限制。通过点击即时触发器模块(module)上的闪电图标或场景(scenario)工具栏中的 Schedule setting(计划设置)找到此设置。
您也可以启用顺序处理(sequential processing)或使用睡眠模块(sleep modules)。但是,这些策略具有局限性,仅适用于特定情况。请参阅 高级策略 以了解更多。
计划场景(scheduled scenarios)
在计划场景(scheduled scenarios)(例如使用 轮询触发器(polling triggers))中,根据您的用例,可以尝试以下策略:
设置更长的调度间隔
当您预期单次运行中会有许多数据记录时,延长场景(scenario)运行之间的时间,以分散请求负载。