mirror of
https://github.com/whyour/qinglong.git
synced 2025-05-25 00:16:06 +08:00
修复系统启动执行订阅任务
This commit is contained in:
parent
8d2c62d6d1
commit
f338537ea0
|
@ -26,6 +26,6 @@ export default async () => {
|
||||||
// 运行所有订阅
|
// 运行所有订阅
|
||||||
const subs = await subscriptionService.list();
|
const subs = await subscriptionService.list();
|
||||||
for (const sub of subs) {
|
for (const sub of subs) {
|
||||||
await subscriptionService.handleTask(sub);
|
await subscriptionService.handleTask(sub, true, true, true);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -106,6 +106,7 @@ export default class ScheduleService {
|
||||||
async createCronTask(
|
async createCronTask(
|
||||||
{ id = 0, command, name, schedule = '' }: ScheduleTaskType,
|
{ id = 0, command, name, schedule = '' }: ScheduleTaskType,
|
||||||
callbacks?: TaskCallbacks,
|
callbacks?: TaskCallbacks,
|
||||||
|
runImmediately = false,
|
||||||
) {
|
) {
|
||||||
const _id = this.formatId(id);
|
const _id = this.formatId(id);
|
||||||
this.logger.info(
|
this.logger.info(
|
||||||
|
@ -122,6 +123,10 @@ export default class ScheduleService {
|
||||||
await this.runTask(command, callbacks);
|
await this.runTask(command, callbacks);
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (runImmediately) {
|
||||||
|
await this.runTask(command, callbacks);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async cancelCronTask({ id = 0, name }: ScheduleTaskType) {
|
async cancelCronTask({ id = 0, name }: ScheduleTaskType) {
|
||||||
|
@ -160,9 +165,17 @@ export default class ScheduleService {
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
const job = new LongIntervalJob({ ...schedule, runImmediately }, task, _id);
|
const job = new LongIntervalJob(
|
||||||
|
{ ...schedule, runImmediately: false },
|
||||||
|
task,
|
||||||
|
_id,
|
||||||
|
);
|
||||||
|
|
||||||
this.intervalSchedule.addIntervalJob(job);
|
this.intervalSchedule.addIntervalJob(job);
|
||||||
|
|
||||||
|
if (runImmediately) {
|
||||||
|
await this.runTask(command, callbacks);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async cancelIntervalTask({ id = 0, name }: ScheduleTaskType) {
|
async cancelIntervalTask({ id = 0, name }: ScheduleTaskType) {
|
||||||
|
|
|
@ -124,7 +124,12 @@ export default class SubscriptionService {
|
||||||
return { url, host };
|
return { url, host };
|
||||||
}
|
}
|
||||||
|
|
||||||
public handleTask(doc: Subscription, needCreate = true, needAddKey = true) {
|
public async handleTask(
|
||||||
|
doc: Subscription,
|
||||||
|
needCreate = true,
|
||||||
|
needAddKey = true,
|
||||||
|
runImmediately = false,
|
||||||
|
) {
|
||||||
const { url, host } = this.formatUrl(doc);
|
const { url, host } = this.formatUrl(doc);
|
||||||
if (doc.type === 'private-repo' && doc.pull_type === 'ssh-key') {
|
if (doc.type === 'private-repo' && doc.pull_type === 'ssh-key') {
|
||||||
if (needAddKey) {
|
if (needAddKey) {
|
||||||
|
@ -143,20 +148,21 @@ export default class SubscriptionService {
|
||||||
if (doc.schedule_type === 'crontab') {
|
if (doc.schedule_type === 'crontab') {
|
||||||
this.scheduleService.cancelCronTask(doc as any);
|
this.scheduleService.cancelCronTask(doc as any);
|
||||||
needCreate &&
|
needCreate &&
|
||||||
this.scheduleService.createCronTask(
|
(await this.scheduleService.createCronTask(
|
||||||
doc as any,
|
doc as any,
|
||||||
this.taskCallbacks(doc),
|
this.taskCallbacks(doc),
|
||||||
);
|
runImmediately,
|
||||||
|
));
|
||||||
} else {
|
} else {
|
||||||
this.scheduleService.cancelIntervalTask(doc as any);
|
this.scheduleService.cancelIntervalTask(doc as any);
|
||||||
const { type, value } = doc.interval_schedule as any;
|
const { type, value } = doc.interval_schedule as any;
|
||||||
needCreate &&
|
needCreate &&
|
||||||
this.scheduleService.createIntervalTask(
|
(await this.scheduleService.createIntervalTask(
|
||||||
doc as any,
|
doc as any,
|
||||||
{ [type]: value } as SimpleIntervalSchedule,
|
{ [type]: value } as SimpleIntervalSchedule,
|
||||||
true,
|
runImmediately,
|
||||||
this.taskCallbacks(doc),
|
this.taskCallbacks(doc),
|
||||||
);
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -270,7 +276,7 @@ export default class SubscriptionService {
|
||||||
public async create(payload: Subscription): Promise<Subscription> {
|
public async create(payload: Subscription): Promise<Subscription> {
|
||||||
const tab = new Subscription(payload);
|
const tab = new Subscription(payload);
|
||||||
const doc = await this.insert(tab);
|
const doc = await this.insert(tab);
|
||||||
this.handleTask(doc);
|
await this.handleTask(doc);
|
||||||
return doc;
|
return doc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -280,7 +286,7 @@ export default class SubscriptionService {
|
||||||
|
|
||||||
public async update(payload: Subscription): Promise<Subscription> {
|
public async update(payload: Subscription): Promise<Subscription> {
|
||||||
const newDoc = await this.updateDb(payload);
|
const newDoc = await this.updateDb(payload);
|
||||||
this.handleTask(newDoc);
|
await this.handleTask(newDoc);
|
||||||
return newDoc;
|
return newDoc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -323,7 +329,7 @@ export default class SubscriptionService {
|
||||||
public async remove(ids: number[]) {
|
public async remove(ids: number[]) {
|
||||||
const docs = await SubscriptionModel.findAll({ where: { id: ids } });
|
const docs = await SubscriptionModel.findAll({ where: { id: ids } });
|
||||||
for (const doc of docs) {
|
for (const doc of docs) {
|
||||||
this.handleTask(doc, false, false);
|
await this.handleTask(doc, false, false);
|
||||||
}
|
}
|
||||||
await SubscriptionModel.destroy({ where: { id: ids } });
|
await SubscriptionModel.destroy({ where: { id: ids } });
|
||||||
}
|
}
|
||||||
|
@ -354,7 +360,7 @@ export default class SubscriptionService {
|
||||||
this.logger.silly(error);
|
this.logger.silly(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.handleTask(doc, false);
|
await this.handleTask(doc, false);
|
||||||
const command = this.formatCommand(doc);
|
const command = this.formatCommand(doc);
|
||||||
const err = await this.killTask(command);
|
const err = await this.killTask(command);
|
||||||
const absolutePath = await this.handleLogPath(doc.log_path as string);
|
const absolutePath = await this.handleLogPath(doc.log_path as string);
|
||||||
|
@ -425,7 +431,7 @@ export default class SubscriptionService {
|
||||||
public async disabled(ids: number[]) {
|
public async disabled(ids: number[]) {
|
||||||
const docs = await SubscriptionModel.findAll({ where: { id: ids } });
|
const docs = await SubscriptionModel.findAll({ where: { id: ids } });
|
||||||
for (const doc of docs) {
|
for (const doc of docs) {
|
||||||
this.handleTask(doc, false);
|
await this.handleTask(doc, false);
|
||||||
}
|
}
|
||||||
await SubscriptionModel.update({ is_disabled: 1 }, { where: { id: ids } });
|
await SubscriptionModel.update({ is_disabled: 1 }, { where: { id: ids } });
|
||||||
}
|
}
|
||||||
|
@ -433,7 +439,7 @@ export default class SubscriptionService {
|
||||||
public async enabled(ids: number[]) {
|
public async enabled(ids: number[]) {
|
||||||
const docs = await SubscriptionModel.findAll({ where: { id: ids } });
|
const docs = await SubscriptionModel.findAll({ where: { id: ids } });
|
||||||
for (const doc of docs) {
|
for (const doc of docs) {
|
||||||
this.handleTask(doc);
|
await this.handleTask(doc);
|
||||||
}
|
}
|
||||||
await SubscriptionModel.update({ is_disabled: 0 }, { where: { id: ids } });
|
await SubscriptionModel.update({ is_disabled: 0 }, { where: { id: ids } });
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user