繁体   English   中英

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

[英]Rate limit API queries in node.js

我试图将限制查询速率限制在Battle.net API,最高限制为100次/秒,36,000 /小时。

我当前的代码如下所示:

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

async.eachSeries(regions, function(region, callback) {
    bnet.wow.realmStatusAsync({origin: region}).spread(/*...snip...*/)
});

我需要的是确保没有对battlenet-api调用达到极限,如果是,请排队。

我查看了timequeue.jslimiterasync自己的功能,似乎没有提供我正在寻找的东西。

有人知道如何实现这一目标吗?

有几种可能性:

  1. 等到你被限制并退回你的请求
  2. 跟踪应用程序内部的限制和使用限制。

虽然我认为这两种情况都需要处理,但第二种情况更有价值,因为它会让您的应用程序随时了解在给定时间范围内已经提出了多少请求。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM