#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 секунд, чтобы получить желаемый результат.