2016-10-04 44 views
0

我正在使用AWS lambda進行應用程序使用promise從dynamo獲取多條記錄。最初,我設置了我的context.callbackWaitsForEmptyEventLoop = true,所以處理程序將等待,直到承諾解決。一旦承諾解決,我設置context.callbackWaitsForEmptyEventLoop = false,然後調用callback(null);AWS lambda運行先前事件的隊列剩餘函數

如果在Promise解析後沒有設置callbackWaitsForEmptyEventLoop = false,那麼即使在我調用callback(null)(某些庫函數可能仍然在事件隊列中)後,該函數也會超時。

因此,問題是如果運行時再次用於下次,先前在事件隊列中留下的功能正在恢復,而不是重新開始。有沒有辦法解決這個問題,甚至可以清空以前的事件隊列?

context.callbackWaitsForEmptyEventLoop = true; 

allPromises = getDatafromDynamo(); 
allPromises.then(results => { 
    console.log('Results are', JSON.stringify(results)); 
    context.callbackWaitsForEmptyEventLoop = false; 
    callback(null, 'DONE'); 
    return; 
}).catch((err) => { 
    console.log("Error occurred", err); 
    context.callbackWaitsForEmptyEventLoop = false; 
    callback(err); 
}); 

回答

0

我解決了這個問題,確保沒有任何地方維護全局狀態。 Lambda使用正在運行的進程來處理下一個請求。