【发布时间】:2016-07-20 12:52:49
【问题描述】:
我的代码:
const limit = require('simple-rate-limiter')
const request = limit(require('request').defaults({
gzip: true
})).to(15).per(10 * 1000) // 15 requests per 10 seconds
request(API_ENDPOINT, callback) // call API thousands of times
库:simple-rate-limiter 和著名的 request 库。
我需要调用第 3 方 API 数千次,每 10 秒只允许 15 个请求。上面的代码没有正确限制我的请求,所以服务器发送了一个429 Too Many Requests HTTP 状态代码。
我可以一次发送 15 个请求,但程序必须等待 10 秒才能发送更多请求,否则它会再次收到 429 响应。
我认为这是因为与服务器的连接需要数百毫秒到几秒 (300ms-2s)。所以我的请求时间和服务器收到请求的时间是不一样的。
来自服务器的响应包含 Date 标头。可以以某种方式正确限制请求吗?有没有一个图书馆可以让这变得容易?即使在实施正确的速率限制之后,如果您收到 429 响应,是否也有一种简单的方法可以重试?
【问题讨论】:
-
您想欺骗 API 并调用端点超出其限制?我没听错吗?
-
不,我要按限制调用。如果我不这样做,我会收到一个我不想收到的
429HTTP 响应。
标签: javascript node.js api request rate-limiting