Cron запускается 2 раза узел-cron

#node.js #node-cron

Вопрос:

Я установил библиотеку node-cron и настроил 2 cron в одном файле для запуска с разными интервалами. Первый cron запускается каждые 45 секунд, а второй cron запускается каждые 60 секунд, он работает идеально. Проблема возникает при запуске 60-секундного хрона, автоматически также запускается 45-секундный хрон (обратите внимание, что разница составляет 15 секунд). Почему это происходит?

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

cron.schedule('*/45 * * * * *', async () => { 
   console.log('running 45 seconds')
})

cron.schedule('*/60 * * * * *', async () => { 
   console.log('running 60 seconds')
})
 

Ответ №1:

Cron будет запускать это «каждую 45-ю секунду, каждую минуту…».

Начинается с 0 секунд, затем через 45 секунд. Начинается с 0 секунд, затем через 45 секунд.

Это будет заметно всякий */x раз, когда интервал не делится на родительскую единицу времени (секунды в минуту, минуты в час и т.д.).

Например, */17 * * * * *

 2021-08-17T23:07:00.230Z running */17 seconds
2021-08-17T23:07:17.273Z running */17 seconds
2021-08-17T23:07:34.302Z running */17 seconds
2021-08-17T23:07:51.344Z running */17 seconds
2021-08-17T23:08:00.374Z running */17 seconds
2021-08-17T23:08:17.424Z running */17 seconds
2021-08-17T23:08:34.467Z running */17 seconds
2021-08-17T23:08:51.494Z running */17 seconds
2021-08-17T23:09:00.525Z running */17 seconds
2021-08-17T23:09:17.564Z running */17 seconds
 

Чтобы запустить что-то на 45-секундном таймере через cron, вам, вероятно, потребуется задание каждые 15 секунд, а затем некоторая логика для проверки предыдущих запусков.

Комментарии:

1. Вау, понял, мне пришлось крутить через 30 секунд, а остальные 60 секунд, чтобы получить желаемый результат.