本页目录

修复速率限制错误

在 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 会根据以下因素进行响应:

下表概述了遇到速率限制错误时所有可能的响应:

调度类型 禁用未完成执行(incomplete executions) 启用未完成执行(incomplete executions)
计划(Scheduled) Make 将暂停下一个场景(scenario)运行 20 分钟。
Make 不会重新运行未完成执行。
Make 将暂停下一个场景(scenario)运行 20 分钟。
Make 使用 指数退避(exponential backoff) 重新运行未完成执行。
即时(Instant) Make 使用 指数退避(exponential backoff) 从头开始重新运行未完成执行。 Make 使用 指数退避(exponential backoff) 重新运行未完成执行。

避免速率限制错误的策略取决于场景(scenario)是通过即时触发器(instant triggers)即时接收数据,还是按计划接收数据。

即时场景(instant scenarios)

在即时触发的场景(scenario)中,设置 场景速率限制(scenario rate limit) 来控制场景(scenario)每分钟运行的频率。此策略将请求的突然峰值分散到更长的时间段内,使排队的请求能够以可控的速率处理。

您可以在 每分钟最大启动运行次数字段中配置场景(scenario)速率限制。通过点击即时触发器模块(module)上的闪电图标或场景(scenario)工具栏中的 计划设置找到此设置。

Document image

您也可以启用顺序处理(sequential processing)或使用睡眠模块(sleep modules)。但是,这些策略具有局限性,仅适用于特定情况。请参阅 高级策略 以了解更多。

计划场景(scheduled scenarios)

在计划场景(scheduled scenarios)(例如使用 轮询触发器(polling triggers))中,根据您的用例,可以尝试以下策略:

设置更长的调度间隔

当您预期单次运行中会有许多数据记录时,延长场景(scenario)运行之间的时间,以将传入记录分散到更长的时间段。例如,将场景(scenario)安排为每 5 分钟运行一次,每次运行处理 100 行。

您可以在场景(scenario)工具栏的 计划设置 中配置调度间隔。

设置每次运行处理的记录数较少

如果您需要频繁运行场景(scenario),例如每分钟运行一次,请降低每次运行处理的记录数。建议每次运行最多处理 20 条记录,以避免超出速率限制。例如,将场景(scenario)安排为每分钟运行一次,每次运行处理 20 行。

您可以在模块(module)设置的 限制 字段中配置每次运行的记录数限制。

两种类型

无论场景(scenario)调度类型如何,您都可以执行以下操作来减少请求并防止速率限制错误:

  • 使用批量操作模块,例如 Google Sheets > Bulk Add Rows 和 Bulk Update Rows,在单个请求中处理多个 bundle。例如,向 Google Sheets 请求一次以向电子表格添加 20 行,而不是请求 20 次——每行一次。
  • 使用聚合器模块将多个 bundle 合并为单个 bundle。
  • 如果速率限制错误持续存在,在导致错误的模块之前添加短暂延迟,方法是添加一个 Sleep 模块。

有关更多策略,请继续阅读下一节。

高级策略

本节包含更多速率限制错误策略,当上述策略效果不佳或不适用于您的用例时可尝试这些策略。

顺序处理

当您启用顺序处理时,触发器模块(module)会按传入数据的到达顺序逐个处理,而不是并行处理。Make 会等待场景(scenario)运行完成后才开始下一次运行。

您可以在 Scenario Builder 的 场景设置 中启用顺序处理。

Document image

限制

顺序处理会在发生错误时停止场景(scenario),即使未完成执行已禁用。如果场景(scenario)启用了未完成执行和顺序处理,场景(scenario)会暂停,直到未完成执行被处理完毕,以保持传入数据的顺序。

Sleep 模块

Sleep 模块会将向应用发出的请求延迟最多 300 秒,即 5 分钟。将延迟设置为与速率限制中允许的请求数相匹配。例如,如果应用限制为每分钟 10 次请求,请将延迟设置为 6 秒。

您可以在接收延迟请求的模块(module)之前添加一个 Sleep 模块。

Document image

在以下情况下使用 sleep 模块来解决速率限制错误:

  • 在具有同一应用的多个模块(module)的即时场景(scenario)中
  • 在具有多次运行以处理许多 bundle(例如 10 个)的模块(module)的场景(scenario)中

限制

除了减慢运行时间外,Sleep 模块通常只是延迟导致速率限制错误的问题,而不是解决它们。例如,当快速连续发生的请求到达 Sleep 模块时,该模块只会将这些有问题的请求延迟几秒钟。

未完成执行

当您启用未完成执行时,您可以稍后处理错误并保持场景(scenario)运行。

如果在启用未完成执行的情况下发生速率限制错误,Make 会自动以逐渐增加的间隔重新运行未完成执行。在大多数情况下,这种自动重新运行可以解决问题,场景(scenario)运行会照常继续。只有在出现逻辑错误(例如,错误的映射、筛选条件等)时,您才需要手动解决错误。

要启用未完成执行,请在 场景设置 中的 存储未完成执行 字段中选择 是。

应用会在所有使用该应用的场景(scenario)中统计对其速率限制的请求数。

如果您的场景(scenario)包含消耗大量操作的模块(module),或者您频繁在场景(scenario)中使用同一模块(module),请考虑检查应用的 API 速率限制,或使用本文中的错误处理策略来预先避免频繁的场景(scenario)运行。

2026 年 5 月 14 日

本文包含联盟推广链接。通过这些链接注册不会增加你的费用,但会帮助我们持续产出高质量的免费内容。

理解概念后,先选低风险流程

如果这个概念对应你的真实重复任务,可以先从可人工复核的小流程开始尝试。价格、额度和模块限制请以官方页面为准。

✓ 先跑低风险流程✓ 保留人工复核✓ 价格和额度以官方页面为准
选好流程后打开 Make