You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.6 KiB
67 lines
1.6 KiB
1 year ago
|
/**
|
||
|
* 对爬虫任务列表目录进行监控
|
||
|
* 发现新任务
|
||
|
* 删除已完成的任务文件
|
||
|
* 内存中保存所有任务,及其状态
|
||
|
* 返回当前任务状态
|
||
|
*/
|
||
|
import common from './common.mjs';
|
||
|
import fs from 'node:fs';
|
||
|
import path from 'node:path';
|
||
|
import cron from 'node-cron';
|
||
|
|
||
|
class TaskMoniter {
|
||
|
|
||
|
constructor(task_list_dir) {
|
||
|
this.check_time_gap = 10; //检测间隔时间,单位:秒
|
||
|
this.task_dir = task_list_dir; //监控目录:任务列表保存目录
|
||
|
this.tasks = {}; //内存中的任务列表
|
||
|
this.taskStatus = { //当前任务状态
|
||
|
total: 0, //总任务数
|
||
|
waiting: 0, //等待执行的任务数
|
||
|
running: 0, //正在执行的任务数
|
||
|
done: 0, //已完成的任务数
|
||
|
failed: 0 //执行失败的任务数
|
||
|
};
|
||
|
}
|
||
|
|
||
|
async getStatus() {
|
||
|
|
||
|
}
|
||
|
|
||
|
async getNewTask() {
|
||
|
|
||
|
}
|
||
|
|
||
|
async setTaskDone(task) {
|
||
|
|
||
|
}
|
||
|
|
||
|
async setTaskFailed(task) {
|
||
|
|
||
|
}
|
||
|
|
||
|
async checkTasks() {
|
||
|
}
|
||
|
|
||
|
run() { //开始监控任务目录,把所有任务缓存到内存
|
||
|
console.log('[%s] TaskMoniter started.', common.getTimeString());
|
||
|
|
||
|
//auto run
|
||
|
const task_check_time = this.check_time_gap;
|
||
|
const task_auto_run = cron.schedule(`*/${task_check_time} * * * * *`, () => {
|
||
|
console.log('[%s] TaskMoniter auto check...', common.getTimeString());
|
||
|
|
||
|
}, {
|
||
|
scheduled: false
|
||
|
});
|
||
|
|
||
|
task_auto_run.start();
|
||
|
console.log('[%s] TaskMoniter auto check started.', common.getTimeString());
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
export default TaskMoniter;
|