Node.js 如何设置每个月的节点计划

Node.js 如何设置每个月的节点计划,node.js,npm,Node.js,Npm,我在项目中使用节点计划模块 var ruleResetLimits = new schedule.RecurrenceRule(); //ruleResetLimits.minute = new schedule.Range(0, 59, 1) //IT WORK FINE FOR EVERY 1 MINUTES schedule.scheduleJob(ruleResetLimits, function(){ logger.info(ruleResetLimits); lo

我在项目中使用节点计划模块

var ruleResetLimits = new schedule.RecurrenceRule();
//ruleResetLimits.minute = new schedule.Range(0, 59, 1) //IT WORK FINE FOR EVERY 1 MINUTES 

schedule.scheduleJob(ruleResetLimits, function(){
    logger.info(ruleResetLimits);
    logger.info('MY TASK IS RUN');
});

安装程序如何在每个月的第一天00:00使用节点计划安排作业这将在每个月的第一天12:00运行您的命令

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

var j = schedule.scheduleJob('0 0 1 * *', function(){
    console.log('Your scheduled job at beginning of month');
});
默认情况下,作业只运行一次。因此,如果希望每个月运行一个作业,那么必须在第一个作业运行时再次创建该作业

它使用cron样式的调度。在线上有很多关于cron配置的示例。您想要使用的任何配置都应该很容易找到,并且大多数配置都可以与
节点计划一起使用


请记住,如果您将一次性作业动态地(而不是在应用程序源中硬编码)放入这样的节点,那么如果服务器出于任何原因重新启动,它们将丢失。对于一次性作业,我建议使用持久存储实现作业队列。Redis通常可以很好地实现这一点,但您也可以使用Mongodb或sql后端。

这将在每个月的第一天上午12:00运行您的命令

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

var j = schedule.scheduleJob('0 0 1 * *', function(){
    console.log('Your scheduled job at beginning of month');
});
默认情况下,作业只运行一次。因此,如果希望每个月运行一个作业,那么必须在第一个作业运行时再次创建该作业

它使用cron样式的调度。在线上有很多关于cron配置的示例。您想要使用的任何配置都应该很容易找到,并且大多数配置都可以与
节点计划一起使用


请记住,如果您将一次性作业动态地(而不是在应用程序源中硬编码)放入这样的节点,那么如果服务器出于任何原因重新启动,它们将丢失。对于一次性作业,我建议使用持久存储实现作业队列。Redis通常可以很好地实现这一点,但您也可以使用Mongodb或sql后端。

你好,Maksim和Daniel

很抱歉,问题和答案都不清楚,first Maksim要求每个月1日0:00运行一次作业。。。 …然后你回答一些代码,说它只运行一次

…马克西姆接着说:“但我只想让它运行一次!”??? …Daniel接着说:“如果您想让它运行一次,请添加j.cancel()

什么

我来这里是想找一个例子,以确保我的节点调度功能将在每个月1日0:00运行,正如文档中所说的,完全可以执行重复任务,因为这是cron工作方式的一部分

无论如何,我会分享我的代码,如果有人愿意告诉我它是否能按我需要的方式工作,我将非常感激

var schedule = require('node-schedule');
var rule = new schedule.RecurrenceRule();
rule.month = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
rule.hour = 0;
rule.minute = 0;

var j = schedule.scheduleJob(rule, aggregateStats);

你好,马克西姆和丹尼尔

很抱歉,问题和答案都不清楚,first Maksim要求每个月1日0:00运行一次作业。。。 …然后你回答一些代码,说它只运行一次

…马克西姆接着说:“但我只想让它运行一次!"... ??? …Daniel接着说:“如果您想让它运行一次,请添加j.cancel()

什么

我来这里是想找一个例子,以确保我的节点调度功能将在每个月1日0:00运行,正如文档中所说的,完全可以执行重复任务,因为这是cron工作方式的一部分

无论如何,我会分享我的代码,如果有人愿意告诉我它是否能按我需要的方式工作,我将非常感激

var schedule = require('node-schedule');
var rule = new schedule.RecurrenceRule();
rule.month = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
rule.hour = 0;
rule.minute = 0;

var j = schedule.scheduleJob(rule, aggregateStats);

所以,很明显,这不是一种习惯,不考虑下一个读者,不发布答案,而是编辑问题,我的参数一直工作到现在,所以他们看起来是正确的,但有一个answ。。使用附加参数编辑,我将自己回答,以供将来的读者阅读:

var schedule = require('node-schedule');
var rule = new schedule.RecurrenceRule();
rule.month = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
rule.date = 1;
rule.hour = 0;
rule.minute = 0;

var j = schedule.scheduleJob(rule, aggregateStats);

请注意,
date
param设置为1(月日)

因此,显然这不是考虑下一位读者的习惯,不是发布答案而是编辑问题,我的param一直工作到现在,所以它们似乎是正确的,但有一个answ。。使用附加参数编辑,我将自己回答,以供将来的读者阅读:

var schedule = require('node-schedule');
var rule = new schedule.RecurrenceRule();
rule.month = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
rule.date = 1;
rule.hour = 0;
rule.minute = 0;

var j = schedule.scheduleJob(rule, aggregateStats);

请注意,
date
参数设置为1(月日)

并带有可选的第一个参数(秒),因为在这种情况下,cron不会在月的第一天运行;在包含“秒”之后,它就工作了(在Ubuntu linux[ec2服务器]上观察到!)-

异步函数monthlyJob(){ const jobInterval='00 0 1**';//每月1日00:00:00时(工作) //常量作业间隔='0 1**';//{ logger.info(新日期().toISOString()); }, 空,真 ); 返回工作 }

希望这对某人有所帮助。

具有可选的第一个参数(秒),如本例所示,cron没有在本月1日运行;在包含“秒”之后,它就工作了(在Ubuntu linux[ec2服务器]上观察到!)-

异步函数monthlyJob(){ const jobInterval='00 0 1**';//每月1日00:00:00时(工作) //常量作业间隔='0 1**';//{ logger.info(新日期().toISOString()); }, 空,真 ); 返回工作 }
希望这对其他人有所帮助。

来自“节点计划”文档:

每5分钟执行一次cron作业=*/5***

因此,要在每个月的第一天运行作业,可以使用以下格式:

scheduleJob('0 0 0 1 */1 *', function () {
    console.log('heeeeey')
});
这将在每月的第一天00:00:00运行该功能。

来自“节点计划”文档:

每5分钟执行一次cron作业=*/5***

因此,要在每个月的第一天运行作业,可以使用以下格式:

scheduleJob('0 0 0 1 */1 *', function () {
    console.log('heeeeey')
});

这将在每个月的第一天00:00:00运行函数。

但我只需要运行一次作业就可以了,但一般来说,我更信任cron,而不是nodejs。对于cron,您可以在运行itI更新答案后删除任务。我在回调中包含了
j.cancle()
,它将取消未来计划的作业。这将使作业只运行一次。没关系。但如何在重启服务器上运行此作业?我再次更新了答案。如果这是一个动态作业,并且您希望它在服务器重新启动时消失,那么您不需要做任何额外的事情<代码>节点计划在重新启动之间没有任何持久性。但我需要运行作业