Cronjobs в node.js

Ctrl + Высокий звук + или Ctrl + Высокий звук + ВНИЗ для копирования строк

24
задан Thomas 12 April 2011 в 13:34
поделиться

1 ответ

Это старый вопрос, но в дополнение к принятому ответу стоит упомянуть библиотеку с примерами.

cron - это облегченный пакет, который выполняет указанную функцию с заданным интервалом, используя только системное время и отсутствие постоянства дБ.

const CronJob = require('cron').CronJob;
const jobFiveMinutes = require("./job.five-minutes");
const jobMondayMorning = require("./job.monday-morning");

var jobs = [
    new CronJob({
        cronTime: "00 */5 * * * *", //every five minutes
        onTick: function() {
            jobFiveMinutes();
        },
        start: false, //don't start immediately
        timeZone: 'America/Los_Angeles'
    }),
    new CronJob({
        cronTime: "00 00 9 * * 1", //9 am Monday morning
        onTick: function() {
            jobMondayMorning();
        },
        start: false,
        timeZone: 'America/Los_Angeles'
    }),
];

jobs.forEach(function(job) {
    job.start(); //start the jobs
});

Выше мы требовали два файла и вызывали их внутри двух cronjobs, установленных с разными интервалами. Файлы просто экспортируют функции:

//job.five-minutes.js
module.exports = function(){
    console.log("runs every five minutes")
};

//job.monday-morning.js
module.exports = function(){
    console.log("runs every monday morning at 9 am, Los Angeles time")
};

Независимо от того, запускаете ли вы его локально или на удаленном сервере в каком-либо регионе, он будет работать в соответствии с прошедшим часовым поясом (хотя это необязательно и не имеет значения в случае минуты).

Кроме того, перезапуск сервера / скрипта не повлияет на его работу, так как он синхронизирован с системным временем. Задание "00 */5 * * * *" будет выполняться для каждого кратного 5, то есть 5, 10, 15, 20 и т. Д. Таким образом, даже если вы перезапустите скрипт на 24, он будет работать на 25, а не на 29.

Наконец, пакет расширил синтаксис cron и теперь включает секунды слева. Следовательно, вы даже можете определить, в какую именно секунду вы хотите запустить задание.

0
ответ дан 29 November 2019 в 00:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: