0

我正在为我的应用程序使用 AWS lambda,以使用 Promise 从 dynamo 获取多个记录。最初我设置我的 context.callbackWaitsForEmptyEventLoop = true,所以处理程序将等到 promise 被解决。一旦承诺得到解决,我将设置 context.callbackWaitsForEmptyEventLoop = false 然后调用 callback(null);

如果我在 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);
});  
4

1 回答 1

0

我通过确保在任何地方都没有维护全局状态来解决这个问题。Lambda 将正在运行的进程用于下一个请求。

于 2016-11-04T20:29:52.617 回答