AWS Lambda Node.js 12.x принудительный выход

#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(..). Это сработало. Спасибо. Вы хотите добавить ответ, чтобы я мог его принять.