Я создал приложение, которое загружает PDF-файл с определенного URL-адреса и отправляет его по электронной почте определенным людям по определенному расписанию.Для этого я использовал пакеты request, nodemailer и node-schedule.Я создал файл с именем Jobs.js, где хранятся все задания.Его структура выглядит следующим образом:
module.exports = {
Jobs: [
{
URL: http://something.com,
Schedule: "6 * * * *",
Sender: me@something.com,
Reciever: me2@something.com,
Subject: "periodic update",
SuccessMessage: "Please find attached this pdf",
FailedMessage: function(){
return `Unable to send email but you can download from {this.URL}`
}
},
{
URL: http://something.com,
Schedule: "7 * * * *",
Sender: me3@something.com,
Reciever: me4@something.com,
Subject: "periodic update",
SuccessMessage: "Please find attached this pdf",
FailedMessage: function(){
return `Unable to send email but you can download from {this.URL}`
}
}
]
}
Сейчас я запускаю приложение через nodemon, поэтому, когда добавляется новое задание и файл сохраняется, оно автоматически перезапускает все приложение.Мне не нравится, что если работа добавляется, когда одна из них запущена!Это перезапустит все приложение, и эта работа не будет завершена.Я хочу, чтобы при добавлении задания приложение знало и просто добавляло это задание в расписание.Код планирования с расписанием узлов довольно прост:
Jobs.forEach((job) => {
schedule.scheduleJob(job.schedule, function(){
downloadPDF(job);
sendEmail(job);
});
В настоящее время я изучаю шаблоны проектирования и задаюсь вопросом, может ли быть такой, который решает эту проблему.Я думаю, что до сих пор мог сделать правильно, что я выделил то, что меняется.