在我正在进行的项目中,我试图通过Watson的音调分析器分析500个文本块。问题是,当我运行并行500 http呼叫时,服务超时。以下是给我问题的代码:
function analyzeManyPosts(posts){
var qPromise = q.defer();
const count = posts.length;
var promList = posts.map(function(post){
// analyzeSinglePost is another function I wrote that returns a promise
// that works as intended
return analyzeSinglePost(post);
});
//Return a collection of all promises
return q.all(promList);
}
当我调用上面的函数时,我得到一个读取Error: connect ETIMEDOUT
我的两个选择是
我正在寻找一种方法来做第一个选项,然后默认为第二个选项。
谢谢!
答案 0 :(得分:0)
我最终使用throat来限制并发呼叫,以便没有一个呼叫超时。我通过以下方式做到了:
function analyzeManyPosts(posts){
var qPromise = q.defer();
const count = posts.length;
//Limit to 50 calls at a time
var promList = posts.map(throat(function(post, i){
console.log(i);
return analyzeSinglePost(post);
}, 50));
//Return a collection of all promises
return q.all(promList);
}
这种方式一次只能进行50次呼叫,避免在同时进行所有500次呼叫时超时。