在 Node.js 中编写可重新安排的 cron 作业
Writing a reschedulable cron job in Node.js
我正在使用 node-schedule 节点包来编写 cron 作业。我能够编写一个简单的计划,但我想要的是一个可重新安排的工作。
在我的应用中,用户可以在特定日期开始任务。现在我可以通过下面的代码轻松实现。
var schedule = require('node-schedule');
var date = new Date(2012, 11, 21, 5, 30, 0);
var j = schedule.scheduleJob(date, function(){
console.log('Do something on scheduled date');
});
我遇到的问题是如何重新安排选定的预定作业。
假设,如果 用户 A 在日期 10/14/2017 开始工作到 运行 那么我在日期 10/14/2017 为 运行 创建了一个新的 cron 作业。但是现在 用户 A 决定将任务日期更改为 1/14/2017,那么我将如何识别 [=21= 创建的任务]user A 已经在队列中的多个任务(由其他用户创建),然后将该 cron 作业重新安排到新日期,即 1/14/2017?
j
有一个 reschedule
方法可以调用。参见 https://www.npmjs.com/package/node-schedule#jobreschedulespec。
j.reschedule(new Date);
要跟踪作业,您可以使用对象将用户映射到计划的作业。
const userJobs = {};
userJobs['user A'] = schedule.scheduleJob(date, () => {
console.log('Do something on scheduled date');
delete userJobs['user A'];
});
userJobs['user A'].reschedule(new Date);
我正在使用 node-schedule 节点包来编写 cron 作业。我能够编写一个简单的计划,但我想要的是一个可重新安排的工作。
在我的应用中,用户可以在特定日期开始任务。现在我可以通过下面的代码轻松实现。
var schedule = require('node-schedule');
var date = new Date(2012, 11, 21, 5, 30, 0);
var j = schedule.scheduleJob(date, function(){
console.log('Do something on scheduled date');
});
我遇到的问题是如何重新安排选定的预定作业。
假设,如果 用户 A 在日期 10/14/2017 开始工作到 运行 那么我在日期 10/14/2017 为 运行 创建了一个新的 cron 作业。但是现在 用户 A 决定将任务日期更改为 1/14/2017,那么我将如何识别 [=21= 创建的任务]user A 已经在队列中的多个任务(由其他用户创建),然后将该 cron 作业重新安排到新日期,即 1/14/2017?
j
有一个 reschedule
方法可以调用。参见 https://www.npmjs.com/package/node-schedule#jobreschedulespec。
j.reschedule(new Date);
要跟踪作业,您可以使用对象将用户映射到计划的作业。
const userJobs = {};
userJobs['user A'] = schedule.scheduleJob(date, () => {
console.log('Do something on scheduled date');
delete userJobs['user A'];
});
userJobs['user A'].reschedule(new Date);