是否有任何node.js库可让您创建n个提供某种密钥的cron作业,然后可以通过密钥删除/编辑特定作业?
例如,我正在寻找这样的东西:
import cronManagerLibrary from 'library';
export const startJob = (key) => {
cronManagerLibrary.addJob(key, '10 * * * * *', function);
}
export const removeJob = (key) => {
cronManagerLibrary.removeJob(key);
}
export const updateJob = (key) => {
cronManagerLibrary.updateJob(key, interval);
}
export const listJobs = () => {
cronManagerLibrary.list();
}
更新:
我发现这个库cron-job-manager确实可以满足我的需要,但是由于每次都需要创建一个作业管理器对象,因此我不确定如何持久保存作业列表。>
这是我尝试过的:
import CronJobManager from 'cron-job-manager';
export startJob = (key) => {
const manager = new CronJobManager();
taskFunction = () => {
console.log('CRON JOB RUNNING');
}
manager.add(key,'10 * * * * *', taskFunction);
manager.start(key);
console.log(manager);
}
每次我为了创建新的cron作业而调用startJob
函数时,manager
对象将不会保留先前开始的作业...是否有办法处理? >
答案 0 :(得分:3)
您可以使用cron模块来执行此操作。使用npm i cron
安装cron。例如,
var CronJob = require('cron').CronJob;
new CronJob('* * * * * *', function () {
console.log('You will see this message every second');
}, null, true, 'America/Los_Angeles');
有关更多信息,请参见文档,
如果您想进行更多的cron活动,则可以随时使用任何终端命令。参见下面的示例,
var exec = require('child_process').exec;
exec("crontab -l", function(err, stdout, stderr) {
console.log(stdout);
});
答案 1 :(得分:0)
这应该可以解决问题,以管理您的cron作业!
import { CronJob } from 'cron';
export class CronManager {
constructor() {
this._jobs = {};
}
add(name, periodText, fn) {
this._jobs[name] = {
name,
cron: new CronJob(periodText, fn, null, true)
};
}
stop(name) {
delete this._jobs[name];
}
delete(name) {
delete this._jobs[name];
}
stopAll() {
for (let cron in this._jobs) {
let activeCron = this._jobs[cron].cron.running;
if (activeCron.running) {
activeCron.stop();
}
}
}
list() {
return this._jobs;
}
running(name) {
return this._jobs[name].cron.running;
}
lastDate(name) {
return this._jobs[name].cron.lastDate();
}
nextDates(name) {
return this._jobs[name].cron.nextDates();
}
}