qinglong/back/schedule.ts
2021-05-03 23:04:42 +08:00

45 lines
1.1 KiB
TypeScript

import schedule from 'node-schedule';
import { exec } from 'child_process';
import Logger from './loaders/logger';
import { Container } from 'typedi';
import CronService from './services/cron';
import { CrontabStatus } from './data/cron';
const run = async () => {
const cronService = Container.get(CronService);
const cronDb = cronService.getDb();
cronDb
.find({})
.sort({ created: 1 })
.exec((err, docs) => {
if (err) {
Logger.error(err);
process.exit(1);
}
if (docs && docs.length > 0) {
for (let i = 0; i < docs.length; i++) {
const task = docs[i];
const _schedule = task.schedule && task.schedule.split(' ');
if (
_schedule &&
_schedule.length > 5 &&
task.status !== CrontabStatus.disabled
) {
schedule.scheduleJob(task.schedule, function () {
exec(task.command);
});
}
}
}
});
};
run();
Logger.info(`
################################################
🛡️ 定时任务schedule启动成功 🛡️
################################################
`);