在node-cron中,如何获取下一个cron作业的时间?例如 cronJob.nextCronJob().time 或其他属性。文档中没有任何方法可以证明这一点。
所以,我有一些js代码,它是一个slackbot,它应该只是简单地监听和解析所提供的日期,然后根据提供的cron或date格式启动一个CronJob来运行某个函数.像这样的东西.
var CronJob = require ('cron').CronJob;
...
robot.respond(date, function (msg)) {
if(!isValidDate(date)) msg.reply("not a valid date);
var interval = isCronDate(date) ? date : new Date(date);
msg.reply("Job about to be scheduled.")
var schedule = new CronJob(interval, processDataOnDate(), function() { msg.reply("hello") }, true);
}
Run Code Online (Sandbox Code Playgroud)
我有一个测试此代码的咖啡文件,我希望回复某些响应,但我不希望根据我在测试代码中提供的日期执行cron作业.但是,确实如此.这是正常的吗?摩卡是否强制代码完成执行,因为这是一个单元测试,或者我做错了什么?我正在运行它来执行我的单元测试.
mocha --compilers coffee:coffee-script/register
Run Code Online (Sandbox Code Playgroud)
有关详细信息,我将其作为slackbot运行,因此这些都是以"说"和"回复"的形式完成的.我的一个测试看起来像这样.
beforeEach ->
yield @room.user.say 'bob', '@bot schedule at 2017-05-25 18:00:00'
expect(@room.messages).to.eql [
['bob', 'bot schedule at 2017-05-25 18:00:00']
['bot', 'Job about to be scheduled']
]
Run Code Online (Sandbox Code Playgroud)
测试失败并通知我实际结果包括机器人的'hello'消息,尽管我在测试中提供的日期是将来的.
我知道这可能听起来有点愚蠢,但是我可以使用 node-cron 创建两个 crone 作业以在一周中不连续的两天运行吗?我是否需要调用两个 CronJob 函数,或者有没有办法只使用一个?
尝试使用 node-cron ' https://github.com/merencia/node-cron '根据计划运行任务。
创建任务并启动它:
var cron = require('node-cron'),
task = cron.schedule('* * * * * *', function () {
console.log('task running...',JSON.stringify(task));
}, false);
task.start();
Run Code Online (Sandbox Code Playgroud)
要停止任务:
task.stop();
Run Code Online (Sandbox Code Playgroud)
销毁任务:
task.destroy();
Run Code Online (Sandbox Code Playgroud)
当任务在它们创建的范围内执行时,代码工作正常。但是根据要求,我以后如何从不同的功能访问“任务”。任务是否可以存储在后端,以便稍后对其执行“stop()”或“destroy()”功能。如果用 node-cron 不可能,还有什么可以使用的。使用 node.js 和 mongoDb。
我想使用节点 cron 作业每 500 毫秒触发一次 JavaScript 函数,尽管我找不到一种方法使 cron 的执行间隔低于 1 秒。
cron.schedule("*/1 * * * * *", function() {
console.log("running a task every 1 second");
});
Run Code Online (Sandbox Code Playgroud)
有没有办法使用节点 cron 作业每 500 毫秒运行一个函数?
我最近开始使用 node-cron 作为作业调度程序。我有很多工作正在排队。
有没有一种方法可以使用可视化工具来监控它们(类似于 Agenda 中的 Agendash)?
或者您通常如何监控和调试作业?(试图找到一些最佳实践)
所以我知道Heroku的免费dynos'在没有任何流量的情况下'降温' - 这对我使用node-cron模块实现的cron作业有何影响?
我试图每3个小时运行一个node-cron作业,我不确定我是否做得对.
现在我正在使用:
* * */8 * * *
Run Code Online (Sandbox Code Playgroud)
它是否正确?
我正在使用 node-cron 包来调度 node-cron 作业。我想安排一个 node-cron 作业,该作业将在每个新月运行。例如:我的 node-cron 作业应该在2020 年 9 月 1 日之后运行,然后它应该在2020 年 10 月 1 日运行等等..!请帮我解决上述问题。提前致谢。
编辑: - 这已在“node-cron”版本>“3.0”中得到解决
我有以下代码。 "node-cron": "^2.0.3"
cron.schedule('46 00 * * *',() => {
//code to be executed
console.log("Tik")
},{
scheduled: true,
timezone: "America/New_York"
});
Run Code Online (Sandbox Code Playgroud)
根据我的理解,无论我的机器时区如何,这都应该在美国/纽约时间上午 12:46 触发。但是直到我将时区与主机时间相匹配时它才起作用,例如,如果我的机器时区是欧洲/伦敦并且我使用timezone: "Europe/London"
cron 将在确切的时间工作。
我想为特定时区安排 cron。由于我处理的时区很少,所以每半小时运行一次 cron 并进行检查看起来很有效。
node-cron ×10
node.js ×10
cron ×7
javascript ×4
heroku ×1
mocha.js ×1
mongodb ×1
node-modules ×1
slack ×1