Я запускаю задание 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 сообщения в группе телеграмм из-за этого: (