【发布时间】:2020-07-09 12:59:18
【问题描述】:
我正在尝试使用对讲 API 来关闭一组符合特定条件的对话。我使用 Axios 首先调用他们的 API 来获取一组对话 ID,然后我循环这些 ID 并调用他们的 API 来关闭它们。根据他们的文档,它们受到以下限制:
虽然允许的请求限制持续 1 分钟,但我们将其平均分配到 10 秒的窗口中。这意味着每 10 秒,允许的请求数量就会重置。例如,每分钟 1000 的默认速率限制意味着您每 10 秒周期最多可以发送 166 次操作 (1000/6)
我尝试使用 P-Limit 并且在最终获得 429 之前确实允许更成功的请求。是否有一个好的解决方案来限制请求以匹配他们在文档中设置的标准?
这是我迄今为止使用 PLimit 的尝试——为了简洁起见,我省略了第一个承诺的代码块:
const listOfConversations = [];
axios
.post(searchUrl, searchBodyParameters, config)
.then((response) => {...
.then(() => {
const promises = [];
listOfConversations.forEach((conversation) => {
const p = axios
.post(
`https://api.intercom.io/conversations/${conversation}/parts`,
closeBodyParameters,
config,
)
.catch((error) => {
console.log(
`Error. Failed to close conversations. Server Returned - ${error.response.status}`,
);
});
promises.push(limit(() => p));
});
})
.catch((error) => {
console.log(
`Error. Failed to get number of pages. Server Returned - ${error.response.status}`,
);
});
【问题讨论】:
标签: node.js axios rate-limiting intercom