kam*_*esh 5 cron scheduled-tasks node.js cron-task
我需要在我的 nodejs 应用程序中定期执行一些任务。如果它是固定期限,那么它工作正常。但在我的情况下,周期应该动态变化。下面是我的代码,它没有按我的预期工作。这里 cronjob 没有更新我更改期间的期间。
var period = 1;
var CronJob = require('cron').CronJob;
new CronJob('*/' + period + ' * * * * *', function () {
console.log("some task");
}, null, true, "Indian/Mauritius");
new CronJob('*/5 * * * * *', function () {
period = period * 2;
console.log("updating cronjob period");
}, null, true, "Indian/Mauritius");
Run Code Online (Sandbox Code Playgroud)
在这里,您将创建 2 个都将运行的 CronJobs。为了“更改”周期,您必须首先停止第一个 Cronjob,然后创建一个新的 Cronjob。
例如(未经测试的代码)
var job;
var period = 1;
var CronJob = require('cron').CronJob;
function createCron(job, newPeriod) {
if (job) {
job.stop();
}
job = new CronJob('*/' + newPeriod + ' * * * * *', function () {
console.log("some task");
}, null, true, "Indian/Mauritius");
}
createCron(job, 1);
setTimeout(function() {
period = period * 2;
createCron(job, period);
}, 60000);
Run Code Online (Sandbox Code Playgroud)
如果你想动态改变时间,可以使用CronTimecron job 的方法,然后调用a.setTime(new CronTime(newCronTime)). 在下面的示例中,我创建了一个 cron 作为常量a,每 4 秒运行一次,然后更改时间,使其每秒运行一次。函数a.start()和a.stop()用于启动和停止调度程序。
const CronJob = require('cron').CronJob
const CronTime = require('cron').CronTime
const a = new CronJob('*/4 * * * * *', function() {
run() // function called inside cron
}, null, false)
let run = () => {
console.log('function called')
}
let scheduler = () => {
console.log('CRON JOB STARTED WILL RUN IN EVERY 4 SECOND')
a.start()
}
let schedulerStop = () => {
a.stop()
console.log('scheduler stopped')
}
let schedulerStatus = () => {
console.log('cron status ---->>>', a.running)
}
let changeTime = (input) => {
a.setTime(new CronTime(input))
console.log('changed to every 1 second')
}
scheduler()
setTimeout(() => {
schedulerStatus()
}, 1000)
setTimeout(() => {
schedulerStop()
}, 9000)
setTimeout(() => {
schedulerStatus()
}, 10000)
setTimeout(() => {
changeTime('* * * * * *')
}, 11000)
setTimeout(() => {
scheduler()
}, 12000)
setTimeout(() => {
schedulerStop()
}, 16000)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8305 次 |
| 最近记录: |