Как приложение nodejs может выполнить задачу в определенное время надежно? - PullRequest
1 голос
/ 16 октября 2019

Я хочу выполнить задачу в определенное время в приложении nodejs.
Итак, я написал источник, как показано ниже, используя Timer.

 var _to_execute_time = 1571221163000;   //The timestamp to execute the task.  
 var _current_timestamp = Date.now();   //The current timestamp.  
//Scheduling the task using setTimeout();

 setTimeout(task_function,  _to_execute_time - _current_timestamp);  

Проблема в том, что setTimeout () отменяется, если система перезагружается перед выполнением задачи.
Как я могу исправить эту проблему и надежно запустить задачу?

Ответы [ 2 ]

1 голос
/ 16 октября 2019

Я бы порекомендовал использовать для выполнения задачи node-schedule, он принимает формат cron. Вы можете запланировать выполнение задачи в определенное время или ее повторение

var j = schedule.scheduleJob ('0 1 * * *', function (fireDate) {console.log ('Это задание должно былозапускается по '+ fireDate +', но фактически запускается по '+ new Date ());});

https://www.npmjs.com/package/node-schedule

1 голос
/ 16 октября 2019

Вы можете использовать node-cron. Крона будет работать в указанное время.

Пакет npm, который вы можете использовать: node-cron.

var cron = require('node-cron');

cron.schedule('* * * * *', () => {
  console.log('running a task every minute');
});

ИЛИ

cron.schedule('0 11 * * *', () => {
  console.log('running a task at 11:00 AM');
});

Допустимые поля для установки времени:

 # ┌────────────── second (optional)
 # │ ┌──────────── minute
 # │ │ ┌────────── hour
 # │ │ │ ┌──────── day of month
 # │ │ │ │ ┌────── month
 # │ │ │ │ │ ┌──── day of week
 # │ │ │ │ │ │
 # │ │ │ │ │ │
 # * * * * * *
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...