mirror of
https://github.com/whyour/qinglong.git
synced 2025-12-23 07:32:40 +08:00
Fix task status reset issue - preserve running tasks on restart
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
This commit is contained in:
parent
d64dc64df7
commit
f043aa62e4
|
|
@ -397,6 +397,16 @@ export function psTree(pid: number): Promise<number[]> {
|
|||
});
|
||||
}
|
||||
|
||||
export function isPidRunning(pid: number): boolean {
|
||||
try {
|
||||
// Signal 0 doesn't kill the process, just checks if it exists
|
||||
process.kill(pid, 0);
|
||||
return true;
|
||||
} catch (error) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
export async function killTask(pid: number) {
|
||||
const pids = await psTree(pid);
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import { AuthDataType, SystemModel } from '../data/system';
|
|||
import SystemService from '../services/system';
|
||||
import UserService from '../services/user';
|
||||
import { writeFile, readFile } from 'fs/promises';
|
||||
import { createRandomString, fileExist, safeJSONParse } from '../config/util';
|
||||
import { createRandomString, fileExist, safeJSONParse, isPidRunning } from '../config/util';
|
||||
import OpenService from '../services/open';
|
||||
import { shareStore } from '../shared/store';
|
||||
import Logger from './logger';
|
||||
|
|
@ -132,7 +132,20 @@ export default async () => {
|
|||
});
|
||||
|
||||
// 初始化更新所有任务状态为空闲
|
||||
await CrontabModel.update({ status: CrontabStatus.idle }, { where: {} });
|
||||
// 但保留仍在运行的任务的状态
|
||||
const allCrons = await CrontabModel.findAll({ raw: true });
|
||||
for (const cron of allCrons) {
|
||||
// 如果任务有 PID 且进程仍在运行,则保持其状态
|
||||
if (cron.pid && isPidRunning(cron.pid)) {
|
||||
// 保留当前状态(running 或 queued)
|
||||
continue;
|
||||
}
|
||||
// 否则将状态重置为 idle,并清除 PID
|
||||
await CrontabModel.update(
|
||||
{ status: CrontabStatus.idle, pid: undefined },
|
||||
{ where: { id: cron.id } }
|
||||
);
|
||||
}
|
||||
|
||||
// 初始化时执行一次所有的 ql repo 任务
|
||||
CrontabModel.findAll({
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user