Files
certd/packages/ui/certd-server/src/modules/plugin/cron/cron.ts
T

44 lines
961 B
TypeScript
Raw Normal View History

2023-01-29 13:44:19 +08:00
import cron from 'node-cron';
export type CronTask = {
/**
* 为空则为单次执行
*/
cron: string;
job: () => Promise<void>;
name: string;
};
export class Cron {
logger;
constructor(opts) {
this.logger = opts.logger;
}
register(task: CronTask) {
if (!task.cron) {
this.logger.info(`[cron] register once : [${task.name}]`);
task.job();
return;
}
this.logger.info(`[cron] register cron : [${task.name}] ,${task.cron}`);
cron.schedule(task.cron, task.job, {
name: task.name,
});
2023-05-24 15:41:35 +08:00
this.logger.info('当前定时任务数量:', this.getListSize());
2023-01-29 13:44:19 +08:00
}
remove(taskName: string) {
this.logger.info(`[cron] remove : [${taskName}]`);
const tasks = cron.getTasks() as Map<any, any>;
2023-05-24 15:41:35 +08:00
const node = tasks.get(taskName);
if (node) {
node.stop();
tasks.delete(taskName);
}
2023-01-29 13:44:19 +08:00
}
2023-05-24 15:41:35 +08:00
getListSize() {
2023-01-29 13:44:19 +08:00
const tasks = cron.getTasks();
return tasks.size;
}
}