最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

在Node.js的限速API请求

运维笔记admin17浏览0评论

在Node.js的限速API请求

在Node.js的限速API请求

首先,我是新来的,所以请...温柔......我一直在自学的Node.js在过去的几个月中,大多是从FlightAware网站API凑一堆数据的愿望。

我试图从他们的网站,请求飞机航班的列表,这里是我到目前为止所。

var aircraft = [array,of,aircraft,tail,numbers]   

for (i=0; i < aircraft.length; i++) {

    faGetFlight(aircraft[i],function doneLookup(data) {

        dbUpdateFlight(collectionName, data)
    })
}

此代码的工作,但只要有超过10架飞机在列表中,它失败,因为正在发送在一分钟内超过10个API请求。什么是一些简单/简单的方法来减缓这种下降一点点。我想送约50-60 API请求的每一个运行这个时间总的,所以我需要在间隔5-6分钟。所述faGetFlight()函数使用“请求”模块。我已经试过了请求速率限制模块,而不是请求模块,但我似乎无法使它工作。我不认为授权正常工作与请求速率限制模块。获取有关匿名用户的错误。对于它的工作,它只有请求模块可代替,但我碰到的速率限制的问题。

这里是我的faGetFlight()代码。

var RateLimiter = require('request-rate-limiter');
const REQS_PER_MIN = 10; // that's 25 per second
var limiter = new RateLimiter(REQS_PER_MIN);

//API Variables //
var apiUrl = 'url'
var apiEndpoint = 'endpoint'
var apiAuth = 'apikey'
var apiExtData = 0
var apiHowMany = 15         //Number of results to request.                                               

var options = { method: 'GET',
    url: apiUrl + apiEndpoint,
    qs: { ident: acIdent
        },

        headers: 
    { 
        Authorization: apiAuth }                  
    };

        limiter.request(options, function doneDownload(error, response, body) {         
            if (error) throw new error(error);
            callback(body)
        });

}

很抱歉,如果这是不明确......这是我的第一篇文章!

回答如下:

您可以使用的功能和简单的setTimeout做一个天真的实现。

看到:

var aircrafts = [array,of,aircraft,tail,numbers]; 
var REQS_PER_MIN = 10;
var MAX_AMOUNT_REQUESTS = 100;
var timeout = (1 / REQS_PER_MIN) * 60 * 1000;

processAircraft(0);

function processAircraft(index){
    if(index >= MAX_AMOUNT_REQUESTS)
        return console.log("All done!");
    //On start of function, schedule next processing in "timeout" ms
    setTimeout(function(){
        processAircraft(index+1);
    }, timeout);

    faGetFlight(aircrafts[index], function doneLookup(data) {
        dbUpdateFlight(collectionName, data)
    })
}

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论