Express实现定时任务
安装库
npm i -s node-schedule
创建文件夹scheduler,在其中创建index.js
const ciTask = require('./task/get_ci_data');
const jiraTask = require('./task/get_jira_data');
const TaskScheduler = require('./task/task_scheduler')class Scheduler {constructor() {this.jobs = [];}add(job) {this.jobs.push(job);}start() {this.jobs.forEach(job => job.start());}stop() {this.jobs.forEach(job => job.stop());}
}const scheduler = new Scheduler();scheduler.add(new TaskScheduler('0 0 8 ? * 1', ciTask)) //添加的定时任务
scheduler.add(new TaskScheduler('0 0 8 ? * 1', jiraTask))module.exports = scheduler
在其下的task文件夹中创建task_scheduler.js文件,创建TaskScheduler类
const schedule = require('node-schedule');class TaskScheduler {constructor(cronExpression, task) {// 将传入的 cron 表达式和任务保存为成员变量this.cronExpression = cronExpression;this.task = task;this.job = null;}start() {if (!this.job) {this.job = schedule.scheduleJob(this.cronExpression, this.task);}}stop() {if (this.job) {this.job.cancel();this.job = null;}}
}// 导出任务调度器类
module.exports = TaskScheduler;
在express的listen中启动scheduler
const scheduler = require('../scheduler');
server.listen(port, () => {scheduler.start();
});