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