2017-01-01 42 views
0

在我正在開發的一個項目中,我試圖通過Watson的音頻分析儀分析500個文本塊。問題是,當我運行並行500 http呼叫時,服務超時。以下是給我的問題代碼:如何延長使用Watson音頻分析儀的超時時間

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

我兩個選擇,其一是

  • 增加超時,或
  • 請確保我只在呼叫n-1解決後運行呼叫n。

我正在尋找一種方法來執行第一個選項,在默認爲第二個選項之前。

謝謝!

+0

如果你使用藍鳥,它有一個併發的map函數,你可以告訴它只能一次運行8個調用。 –

回答

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個呼叫立即作出。

相關問題