mirror of
https://github.com/immich-app/immich.git
synced 2025-01-04 02:46:47 +01:00
feat: seperate sub-process for api worker (#10000)
This commit is contained in:
parent
7e2a03a8d9
commit
8f42766979
2 changed files with 7 additions and 8 deletions
|
@ -1,4 +1,5 @@
|
||||||
import { CommandFactory } from 'nest-commander';
|
import { CommandFactory } from 'nest-commander';
|
||||||
|
import { fork } from 'node:child_process';
|
||||||
import { Worker } from 'node:worker_threads';
|
import { Worker } from 'node:worker_threads';
|
||||||
import { ImmichAdminModule } from 'src/app.module';
|
import { ImmichAdminModule } from 'src/app.module';
|
||||||
import { LogLevel } from 'src/config';
|
import { LogLevel } from 'src/config';
|
||||||
|
@ -16,7 +17,7 @@ async function bootstrapImmichAdmin() {
|
||||||
|
|
||||||
function bootstrapWorker(name: string) {
|
function bootstrapWorker(name: string) {
|
||||||
console.log(`Starting ${name} worker`);
|
console.log(`Starting ${name} worker`);
|
||||||
const worker = new Worker(`./dist/workers/${name}.js`);
|
const worker = name === 'api' ? fork(`./dist/workers/${name}.js`) : new Worker(`./dist/workers/${name}.js`);
|
||||||
worker.on('exit', (exitCode) => {
|
worker.on('exit', (exitCode) => {
|
||||||
if (exitCode !== 0) {
|
if (exitCode !== 0) {
|
||||||
console.error(`${name} worker exited with code ${exitCode}`);
|
console.error(`${name} worker exited with code ${exitCode}`);
|
||||||
|
|
|
@ -3,7 +3,6 @@ import { NestExpressApplication } from '@nestjs/platform-express';
|
||||||
import { json } from 'body-parser';
|
import { json } from 'body-parser';
|
||||||
import cookieParser from 'cookie-parser';
|
import cookieParser from 'cookie-parser';
|
||||||
import { existsSync } from 'node:fs';
|
import { existsSync } from 'node:fs';
|
||||||
import { isMainThread } from 'node:worker_threads';
|
|
||||||
import sirv from 'sirv';
|
import sirv from 'sirv';
|
||||||
import { ApiModule } from 'src/app.module';
|
import { ApiModule } from 'src/app.module';
|
||||||
import { envName, excludePaths, isDev, serverVersion, WEB_ROOT } from 'src/constants';
|
import { envName, excludePaths, isDev, serverVersion, WEB_ROOT } from 'src/constants';
|
||||||
|
@ -16,6 +15,7 @@ import { useSwagger } from 'src/utils/misc';
|
||||||
const host = process.env.HOST;
|
const host = process.env.HOST;
|
||||||
|
|
||||||
async function bootstrap() {
|
async function bootstrap() {
|
||||||
|
process.title = 'immich-api';
|
||||||
otelSDK.start();
|
otelSDK.start();
|
||||||
|
|
||||||
const port = Number(process.env.IMMICH_PORT) || 3001;
|
const port = Number(process.env.IMMICH_PORT) || 3001;
|
||||||
|
@ -60,9 +60,7 @@ async function bootstrap() {
|
||||||
logger.log(`Immich Server is listening on ${await app.getUrl()} [v${serverVersion}] [${envName}] `);
|
logger.log(`Immich Server is listening on ${await app.getUrl()} [v${serverVersion}] [${envName}] `);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isMainThread) {
|
bootstrap().catch((error) => {
|
||||||
bootstrap().catch((error) => {
|
|
||||||
console.error(error);
|
console.error(error);
|
||||||
process.exit(1);
|
throw error;
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue