2016-10-04 83 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使用正在运行的进程来处理下一个请求。