如何在节点应用程序中使用Generic cron作业?

时间:2018-02-22 12:16:18

标签: cron node-cron

我有节点应用程序,我希望每天运行任务。所以我想使用node-cron来安排任务,但不是这样:

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

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

我需要一些通用的解决方案,以便在一个地方我只有空的身体用于cron作业,从不同的位置采取不同的功能。这意味着我们总共有两个文件,一个只有cron作业函数处理程序,另一个有cron作业列表。从我们想要运行这些工作的地方,我们只需要一些基本的呼叫。

有人能建议我这个解决方案吗?

1 个答案:

答案 0 :(得分:1)

我得到了解决方案。使用node-cron-job模块我已经实现了我想要的。让我详细解释一下: -

首先我创建了包含作业的新文件,让它命名为jobs.js: -

// jobs.js 

exports.first_job = {

    on:"* * * * * " //runs every minute
    },
    job: function () {
        console.log("first_job");
    },
    spawn: true             
}

exports.second_job = {

    on: "*/2 * * * * *",    //runs every 2 second 
    job: function () {
        console.log("second_job");
    },
    spawn: false            // If false, the job will not run in a separate process. 
}

在这里,我们定义了两个作业名称first_job和second_job。我们可以定义所需的数量。

最后,我们需要通过以下简单步骤从任何位置调用这些作业: -

// main.js 

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

cronjob.setJobsPath(__dirname + '/jobs.js');  // Absolute path to the jobs module. 

cronjob.startJob('first_job');  
cronjob.startJob('second_job');

我们可以在一个电话中调用所有工作,如下所示: -

cronjob.startAllJobs();