如何停止节点Cron作业

时间:2018-12-08 16:43:19

标签: node.js node-cron

我想在某些情况下停止节点cron作业。

这就是我开始每1秒运行一次任务的方式。

const runScheduler = (url)=>{
    cron.schedule('*/1 * * * * *', () => {
        console.log('running a task every one second');
        async.waterfall([ getUrlDelay(url), dbMethods.updateUrlResponses(url) ],function(err, success){
            if(err) return console.log('Url Not Found');
        })
      });
}

我想停止这项工作,但无法完成。

4 个答案:

答案 0 :(得分:0)

为了cancel可以创建具有唯一名称的作业。

var j = cron.scheduleJob(unique_name, '*/1 * * * * *',()=>{
    //Do some work
});
// for some condition in some code
let my_job = cron.scheduledJobs[unique_name];
my_job.cancel();

它应该取消作业。

答案 1 :(得分:0)

我成功使用cron-job-manager创建,读取,更新和删除作业。

添加工作后manager.add('key','* 30 * * * *', taskFunction) 您可以轻松地将其manager.stop('key')停止或将其manager.deleteJob('key')删除

答案 2 :(得分:0)

我遇到了同样的问题。使用node-schedule通过为每个作业自定义ID解决了该问题:

启动自定义作业:

  const campaignId = "MY_CUSTOM_ID"
  let job = schedule.scheduleJob(campaignId, '* * * * * *', function () {
    console.log('running campaign: ' + campaignId)
  })

停止自定义作业:

  const campaignId = "MY_CUSTOM_ID"
  let current_job = schedule.scheduledJobs[campaignId]
  current_job.cancel()

答案 3 :(得分:-1)

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

  var task = cron.schedule('* * * * *', () =>  {
    console.log('will execute every minute until stopped');
});
task.stop();