我想在某些情况下停止节点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');
})
});
}
我想停止这项工作,但无法完成。
答案 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();