#node.js #aws-lambda #setinterval
#node.js #aws-lambda #setinterval
Вопрос:
Я использую события CloudWatch для запуска лямбды. Лямбда должен выполнить задачу в течение пары секунд после начала 59-й минуты через час. Для простоты предположим, что это сохранение записи в DynamoDB.
События Cloutwatch не могут гарантировать точное время выполнения, поэтому я настроил его на запуск через 58 минут после часа, затем Lamaba выполняет фрагмент кода, как показано ниже, где я вызываю функцию каждую секунду. Я установил для лямбды тайм-аут через 90 секунд.
exports.handler = (event) => {
let ddb = new AWS.DynamoDB.DocumentClient();
//snip..
setInterval(function() {
var date = (new Date()).toISOString();
var minutesAndSecondsOfHour = parseInt(date.slice(14,16) date.slice(17,19);
if(minutesAndSecondsOfHour >= 5900) {
ddb.put(...);
// somehow exit
}
}, 1000);
//snip
Я не знаю, как выйти из лямбды после выполнения моей задачи с кодом успеха. Я пробовал `process.exit (0)’, но если я использую сохранение в DynamoDB, оно не завершается.
Если я удалю process.exit(0)
и разрешу тайм-аут лямбды, сохранение в DynamoDB сработает, но лямбда завершится с ошибкой тайм-аута.
Комментарии:
1. Остановите интервал.
2. Можете ли вы подробнее рассказать об этом?
3. Ваш интервал продолжает выполняться (без необходимости) после истечения времени и сохранения записи. Итак, остановите его по истечении времени.
4. Я не знал о методе clearInterval(..). Это сработало. Спасибо. Вы хотите добавить ответ, чтобы я мог его принять.