AWS лямбда, выполняющая функции остатка очереди предыдущего события

Я использую AWS лямбда для своего приложения, чтобы получить несколько записей из динамо с помощью обещаний. Первоначально я установил свой context.callbackWaitsForEmptyEventLoop = true, поэтому обработчик будет ожидать разрешения обещаний. Как только обещания будут решены, я устанавливаю context.callbackWaitsForEmptyEventLoop = false и затем вызываю callback(null);

Если я не установлю callbackWaitsForEmptyEventLoop = false после того, как обещания будут разрешены, функция завершится по таймауту даже после того, как я вызову обратный вызов (ноль)(некоторые функции библиотек могут все еще находиться в очереди событий).

Таким образом, проблема заключается в том, что если снова использовать ту же среду выполнения для следующего раза, ранее перенесенные функции в очереди событий возобновляются, а не запускаются заново. Есть ли способ обойти это или даже очистить предыдущую очередь событий?

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);
});  

1 ответ

Я решил этот вопрос, убедившись, что нигде не поддерживается глобальное состояние. Лямбда использует запущенный процесс для следующих запросов.

Другие вопросы по тегам