我可以安排node-cron每分钟或每30秒运行一次(参见代码),但我希望它每分钟运行一次。原因是我也有另一个任务每小时调度一次,我希望在每小时任务运行之前完成分钟任务。
分钟任务将Modbus值和日志读取到MongoDB数据库中。每小时任务获取所有记录并将它们发布到REST端点,并记录同步时间。因为这两个任务在整点同时运行,所以POST中遗漏了一个值。
var cron = require('node-cron');
cron.schedule('* * * * *', () => { // Every minute
console.log("--------------------------------------------------");
console.log('Cron Task - Time: ' + (new Date()));
console.log("--------------------------------------------------");
});
cron.schedule('*/30 * * * * *', () => { // Every 30 seconds
console.log("--------------------------------------------------");
console.log('Cron Task - Time: ' + (new Date()));
console.log("--------------------------------------------------");
});发布于 2019-10-02 09:35:10
通过一些尝试,我发现了一个错误.下面的代码每分钟运行一次:
var cron = require('node-cron');
cron.schedule('30 0-59 * * * *', () => { // Every minute offset 30 seconds
console.log("--------------------------------------------------");
console.log('Cron Task - READ - Time: ' + (new Date()));
console.log("--------------------------------------------------");
});
/*
--------------------------------------------------
Cron Task - READ - Time: Tue Oct 01 2019 10:09:30 GMT-0400 (EDT)
--------------------------------------------------
--------------------------------------------------
Cron Task - READ - Time: Tue Oct 01 2019 10:10:30 GMT-0400 (EDT)
--------------------------------------------------
--------------------------------------------------
Cron Task - READ - Time: Tue Oct 01 2019 10:11:30 GMT-0400 (EDT)
--------------------------------------------------
--------------------------------------------------
Cron Task - READ - Time: Tue Oct 01 2019 10:12:30 GMT-0400 (EDT)
--------------------------------------------------
*/我最终让读取任务每分钟运行一分钟,但使每小时同步任务在一小时后30秒运行:
var cron = require('node-cron');
const schedule_read = require('./schedule_read');
const schedule_sync = require('./schedule_sync');
cron.schedule('* * * * *', () => { // Every minute
console.log("--------------------------------------------------");
console.log('Cron Task - READ - Time: ' + (new Date()));
console.log("--------------------------------------------------");
schedule_read.read();
});
cron.schedule('30 0 0-23 * * *', () => { // Every hour offset by 30 seconds
console.log("--------------------------------------------------");
console.log(' Cron Task - SYNC - Time: ' + (new Date()));
console.log("--------------------------------------------------");
schedule_sync.sync();
});发布于 2019-10-01 16:31:22
你应该控制你的时间表,告诉CPU运行之后,首先运行30秒,然后运行一分钟,最后一个小时的时间表。在接下来的一分钟和几个小时的时间里,所有的事情都是可以的,并自动运行它。
var cron = require('node-cron');
var minutsBoolean = false;
var hourBoolean = false;
function oneHourIsRun() {
cron.schedule('* 0-23 * * *', () => { // Every hour
console.log("--------------------------------------------------");
console.log('Cron Task - Time: ' + (new Date()));
//hourly task grabs all of the records and POSTs them to a REST endpoint and logs the sync time
console.log("--------------------------------------------------");
});
}
function oneMinutsIsRun() {
cron.schedule('* * * * *', () => { // Every one minuts, runnig after 30 second
console.log("--------------------------------------------------");
console.log('Cron Task - Time: ' + (new Date()));
//minute task reads Modbus values and logs to a MongoDB database .then() {below code in here}
if (!hourBoolean) {
oneHourIsRun();
hourBoolean = true;
}
console.log("--------------------------------------------------");
});
}
cron.schedule('30 * * * * *', () => { // Every 30 second, */30 ruunig in 30 minuts of hour not 30 secend
console.log("--------------------------------------------------");
console.log('Cron Task - Time: ' + (new Date()));
if (!minutsBoolean) {
oneMinutsIsRun();
minutsBoolean = true;
}
console.log("--------------------------------------------------");
});https://stackoverflow.com/questions/58177345
复制相似问题