在paralell中多次调用amazon API会遇到throtteling限制

时间:2016-04-22 18:04:47

标签: node.js amazon-web-services asynchronous callback

我正面临亚马逊项目的一些问题

这是我目前的情况:

我正在尝试使用许多搜索项目从他们的api导入亚马逊的许多文章。

这就是我实际调用我的函数的方式:

opHelper.execute('ItemSearch', {
    'SearchIndex': SearchIndex,
    'Keywords': array[2],
    'ResponseGroup': 'ItemAttributes',
    'Condition': 'All'
}).then((response) => {
    for (var a = 0; a <= response.result.ItemSearchResponse.Items[0].Item.length; a++) {
        opHelper.execute('ItemLookup', {
            'ItemId': response.result.ItemSearchResponse.Items[0].Item[a].ASIN[0],
            'MechantId': 'All',
            'Condition': 'All',
            'ResponseGroup': 'Medium'
        }).then((response) => {
            //Here im doing that persisting stuff...
        }).catch((err) => { // catch for each error
           console.log(err+" foreach");
        });
    }
}).catch((err) => { // catch first lookup error
        console.log(err+" first search response");
    });

正如你所看到的,我正在寻找一个搜索项目,因此我得到一个ASIN数组 - 对于他们每个人我正在做一个项目查找。

所有这一切都运行良好,直到我运行多次 - 亚马逊只允许每秒每个IP请求...你可以想象如果这些函数并行运行几次我将达到这个限制而不是一次。 :(

我在迭代结束时尝试了一些类似while(ready == false)的东西来等待第一个函数的状态......

节点中是否有一种方法可以阻止单个线程并运行一个接一个的函数?

谢谢,

问候 尼古拉斯

0 个答案:

没有答案