mirror of
https://github.com/whyour/qinglong.git
synced 2025-05-22 22:36:06 +08:00
boot 任务改为在依赖安装完成后执行
This commit is contained in:
parent
40a831f3a2
commit
71a7c1b9d3
|
@ -17,7 +17,6 @@ async function startServer() {
|
|||
Logger.debug(`✌️ 后端服务启动成功!`);
|
||||
console.debug(`✌️ 后端服务启动成功!`);
|
||||
process.send?.('ready');
|
||||
require('./loaders/bootAfter').default();
|
||||
})
|
||||
.on('error', (err) => {
|
||||
Logger.error(err);
|
||||
|
|
|
@ -68,24 +68,26 @@ export default async () => {
|
|||
});
|
||||
}
|
||||
|
||||
const installDependencies = () => {
|
||||
// 初始化时安装所有处于安装中,安装成功,安装失败的依赖
|
||||
DependenceModel.findAll({
|
||||
const installDependencies = async () => {
|
||||
const docs = await DependenceModel.findAll({
|
||||
where: {},
|
||||
order: [
|
||||
['type', 'DESC'],
|
||||
['createdAt', 'DESC'],
|
||||
],
|
||||
raw: true,
|
||||
}).then(async (docs) => {
|
||||
await DependenceModel.update(
|
||||
{ status: DependenceStatus.queued, log: [] },
|
||||
{ where: { id: docs.map((x) => x.id!) } },
|
||||
);
|
||||
setTimeout(() => {
|
||||
dependenceService.installDependenceOneByOne(docs);
|
||||
}, 5000);
|
||||
});
|
||||
|
||||
await DependenceModel.update(
|
||||
{ status: DependenceStatus.queued, log: [] },
|
||||
{ where: { id: docs.map((x) => x.id!) } },
|
||||
);
|
||||
|
||||
setTimeout(async () => {
|
||||
await dependenceService.installDependenceOneByOne(docs);
|
||||
|
||||
require('./loaders/bootAfter').default();
|
||||
}, 5000);
|
||||
};
|
||||
|
||||
// 初始化更新 linux/python/nodejs 镜像源配置
|
||||
|
|
|
@ -132,10 +132,12 @@ export default class DependenceService {
|
|||
docs: Dependence[],
|
||||
isInstall: boolean = true,
|
||||
force: boolean = false,
|
||||
) {
|
||||
): Promise<void> {
|
||||
docs.forEach((dep) => {
|
||||
this.installOrUninstallDependency(dep, isInstall, force);
|
||||
});
|
||||
|
||||
return taskLimit.waitDependencyQueueDone();
|
||||
}
|
||||
|
||||
public async reInstall(ids: number[]): Promise<Dependence[]> {
|
||||
|
|
|
@ -189,6 +189,19 @@ class TaskLimit {
|
|||
return this.scriptLimit.add(fn, options);
|
||||
}
|
||||
|
||||
public async waitDependencyQueueDone(): Promise<void> {
|
||||
if (this.dependenyLimit.size === 0 && this.dependenyLimit.pending === 0) {
|
||||
return;
|
||||
}
|
||||
return new Promise((resolve) => {
|
||||
const onIdle = () => {
|
||||
this.dependenyLimit.removeListener('idle', onIdle);
|
||||
resolve();
|
||||
};
|
||||
this.dependenyLimit.on('idle', onIdle);
|
||||
});
|
||||
}
|
||||
|
||||
public runDependeny<T>(
|
||||
dependency: Dependence,
|
||||
fn: IDependencyFn<T>,
|
||||
|
|
Loading…
Reference in New Issue
Block a user