Javascript node.js中的速率限制API查询

Javascript node.js中的速率限制API查询,javascript,node.js,asynchronous,rate-limiting,throttling,Javascript,Node.js,Asynchronous,Rate Limiting,Throttling,我正在尝试将对Battle.net API的查询限制为每秒100次调用,即36000次/小时 我当前的代码如下所示: var async = require ('async'); var bnet = require ('battlenet-api'); async.eachSeries(regions, function(region, callback) { bnet.wow.realmStatusAsync({origin: region}).spread(/*...snip..

我正在尝试将对Battle.net API的查询限制为每秒100次调用,即36000次/小时

我当前的代码如下所示:

var async = require ('async');
var bnet = require ('battlenet-api');

async.eachSeries(regions, function(region, callback) {
    bnet.wow.realmStatusAsync({origin: region}).spread(/*...snip...*/)
});
我需要的是确保没有人打电话给我
battlenetapi
运行到极限,如果是,将其排队

我已经看过了,和的自己的能力,似乎没有提供我所寻找的


有人知道如何做到这一点吗?

有几种可能性:

  • 等待,直到您被限制并回退您的请求
  • 在应用程序中跟踪您的限制和使用的限制
  • 虽然我认为这两种情况都需要处理,但第二种情况更有价值,因为它可以让您的应用程序随时知道在给定的时间范围内已经发出了多少请求

    您可以专注于在小时级别上实现这一点,并让退避/重试捕获超过100 req/s时间限制的情况

    要实现这一点,应用程序必须跟踪给定时间段内有多少请求可用。在每次请求之前,必须检查请求计数,以查看是否有可用的请求,是否有API请求可以发出,如果没有,则不会发出请求,并且应用程序将自行调节。此外,需要在适当时重置限制


    关于使用redis来实现这一点的文章很多,谷歌快速搜索应该会发现它们

    所以,你想实现自己的限制器,以确保你的服务不会影响到battle.net的速率限制?不完全是,我想知道是否有任何解决方案可以实现这一目标。在StackOverflow上,询问第三方库解决方案的问题被认为是离题的。请提供您提到的文章的链接。