首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >node.js中的速率限制API查询

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

Stack Overflow用户
提问于 2015-08-23 15:08:31
回答 1查看 1.5K关注 0票数 3

我试图将对Battle.net API的查询限制为100次/秒,36,000次/小时。

我的当前代码如下:

代码语言:javascript
复制
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.js限制器异步自己的能力,似乎没有一个能提供我想要的东西。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-23 16:22:27

有几种可能性是:

  1. 等到你被勒死,然后放弃你的请求。
  2. 跟踪应用程序中的限制和使用限制。

虽然我认为这两种情况都需要处理,但第二种情况更有价值,因为它将在任何时候让您的应用程序知道在给定的时间框架内提出了多少请求。

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

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32168150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档