【发布时间】:2015-12-17 09:24:22
【问题描述】:
我想连接theMovieDb api,获取大量电影。 api 限制为每 10 秒 40 次调用,每个 IP 20 个连接。
如何在 node.js 中执行此操作?现在我一次有一个对 api 的 http 请求,但是任何超过 40 次的调用都会导致错误。
【问题讨论】:
标签: javascript node.js express connection rate-limiting
我想连接theMovieDb api,获取大量电影。 api 限制为每 10 秒 40 次调用,每个 IP 20 个连接。
如何在 node.js 中执行此操作?现在我一次有一个对 api 的 http 请求,但是任何超过 40 次的调用都会导致错误。
【问题讨论】:
标签: javascript node.js express connection rate-limiting
每 10 秒 40 个请求,20 个并发连接,因此在“一个线程”中我们将不得不等待大约 5 秒。
有一个很棒的库,用于所有异步内容,称为 async。
var loadOne = function (id, callback) {
// Do your stuff
// tell it to wait
setTimeout(callback, 5000);
}
async.mapLimit(arrayOfIds, 20, loadOne, function(err, results){
// results is now an array of stats for each file
});
【讨论】:
async来限制并发操作的数量
loadOne 或您想要的任何其他http 库中使用相同的请求。重点是使用mapLimit 你可以限制有多少loadOne 函数会被并行调用。