gpt4 book ai didi

javascript - 如何减慢此 Node 循环 http 请求?

转载 作者:数据小太阳 更新时间:2023-10-29 04:49:09 24 4
gpt4 key购买 nike

我正在尝试使用 request 调用此 API使用 Lambda 函数模块大约 200-300 次。我需要在每次调用之间添加第二个,这样我就不会收到 429 响应。我尝试了几种不同的方法来实现这一点,但它似乎忽略了减慢速度的代码。

人们通常如何在 AWS lambda 中减慢这些请求?如果我可以在循环中插入类似 utilities.sleep(1000) 的东西,让它在继续之前等待一秒钟,那就太好了。我确信这个问题有一个简单的解决方案,但我看到的所有示例似乎都使它变得复杂。

function findProjects(items){

var toggleData = [];

for( var i = 0; i < items.length; i++ ){
setTimeout( callToggle( items[i] ), 1000 );
}

function callToggle( data ){
request({
'url': 'https://www.toggl.com/api/v8/projects/' + data.toggle.data.id,
'method': 'GET',
'headers': {
'Content-Type': 'application/json',
'Accept': 'application/json'
},
'auth': {
'user': 'xxxxxxx',
'pass': 'api_token'
}}, function( error, response, body ){
if( error ) {

console.log( error );
context.done( null, error );
} else {

console.log(response.statusCode, "toggle projects were listed");
var info = JSON.parse(body);
toggleData.push(info);
}
});
}

findDocument( toggleData );
}

最佳答案

你可以这样做:

for(var i = 0; i<items.length; i++){
setTimeout(callToggl, 1000 + (( i * X ) % Y), items[i]);
}

Y 是最大延迟 (1000 + Y) 然后你想要(es 5 秒)和 X 是每个时间调用 (es X=10 : 1000,1010,1020,1030,...

如果你想每次调用 1s:

for(var i = 0; i<items.length; i++){
setTimeout(callToggl(items[i]), 1000 + ( i * 1000 ));
}

编辑

for(var i = 0; i<items.length; i++){
setTimeout(callToggl, 1000 + ( i * 1000 ), items[i]);
}

关于javascript - 如何减慢此 Node 循环 http 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39256689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com