Есть ли способ внести изменения в приложение узла без перезагрузки всего приложения? - PullRequest
1 голос
/ 29 сентября 2019

Я создал приложение, которое загружает 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);                 
}); 

В настоящее время я изучаю шаблоны проектирования и задаюсь вопросом, может ли быть такой, который решает эту проблему.Я думаю, что до сих пор мог сделать правильно, что я выделил то, что меняется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...