首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >node-cron可以每分钟运行几秒吗

node-cron可以每分钟运行几秒吗
EN

Stack Overflow用户
提问于 2019-10-01 10:24:12
回答 2查看 2.1K关注 0票数 0

我可以安排node-cron每分钟或每30秒运行一次(参见代码),但我希望它每分钟运行一次。原因是我也有另一个任务每小时调度一次,我希望在每小时任务运行之前完成分钟任务。

分钟任务将Modbus值和日志读取到MongoDB数据库中。每小时任务获取所有记录并将它们发布到REST端点,并记录同步时间。因为这两个任务在整点同时运行,所以POST中遗漏了一个值。

代码语言:javascript
复制
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("--------------------------------------------------");
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-02 09:35:10

通过一些尝试,我发现了一个错误.下面的代码每分钟运行一次:

代码语言:javascript
复制
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秒运行:

代码语言:javascript
复制
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();
});
票数 0
EN

Stack Overflow用户

发布于 2019-10-01 16:31:22

你应该控制你的时间表,告诉CPU运行之后,首先运行30秒,然后运行一分钟,最后一个小时的时间表。在接下来的一分钟和几个小时的时间里,所有的事情都是可以的,并自动运行它。

代码语言:javascript
复制
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("--------------------------------------------------");
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58177345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档