Cron Job запускается дважды в Serverless с использованием AWS Lambda - PullRequest
0 голосов
/ 27 мая 2018

Я запускаю задание Cron, которое запускается каждое воскресенье в 10:00 UTC

Оно отправляет текстовое сообщение в группу Telegram

Вот мой полный код

Соответствующие части ниже -

serverless.yml

service: lessons-of-hn-telegram-bot

provider:
  name: aws
  runtime: nodejs8.10
  environment:
    BOT_API_KEY: ${file(./env.json):BOT_API_KEY}
    CHANNEL_ID: ${file(./env.json):CHANNEL_ID}

functions:
  cron:
    handler: handler.run
    description: Cron job that runs every Sunday at 10 am UTC
    events:
      - schedule: cron(0 10 ? * SUN *)

handler.js

const axios = require("axios");

const { lessonsOfHN } = require("./src/lessonsOfHN");

exports.run = async (event, context, callback) => {
  const time = new Date();
  console.log(`Your cron function "${context.functionName}" ran at ${time}`);

  const lesson = await lessonsOfHN();
  const ENDPOINT = `https://api.telegram.org/bot${
    process.env.BOT_API_KEY
  }/sendMessage`;

  await axios({
    method: "get",
    url: ENDPOINT,
    data: {
      chat_id: process.env.CHANNEL_ID,
      parse_mode: "markdown",
      disable_web_page_preview: true,
      text: lesson
    }
  });

  callback(null, { lesson, success: true });
};

Нигде в коде запрос дважды не отправляется в Telegramто есть axios записывается только один раз

В журналах, которые я получил, говорится, что cronjob запускался дважды один раз в 10:00:09 am & в 10:01:08 am

Я использую Serverless Framework с AWS Lambda

Как убедиться, что он запускается только один раз?Поскольку люди получают 2 сообщения в группе телеграмм из-за этого: (

...