aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2026-01-25 22:27:05 +0000
committerMohamed Bassem <me@mbassem.com>2026-02-01 10:44:54 +0000
commit9decab898983bc132835d4c517fc02aa695cb4af (patch)
treead7092f1b123412fcbf89f85298f830285bd8a05 /apps
parent95bfa5691ce0d43fbaa9c011df4ec9561635ff8d (diff)
downloadkarakeep-9decab898983bc132835d4c517fc02aa695cb4af.tar.zst
refactor: lazy init background queues
Diffstat (limited to 'apps')
-rw-r--r--apps/workers/index.ts60
1 files changed, 50 insertions, 10 deletions
diff --git a/apps/workers/index.ts b/apps/workers/index.ts
index 07840a4c..dfbac85b 100644
--- a/apps/workers/index.ts
+++ b/apps/workers/index.ts
@@ -3,11 +3,21 @@ import "dotenv/config";
import { buildServer } from "server";
import {
+ AdminMaintenanceQueue,
+ AssetPreprocessingQueue,
+ BackupQueue,
+ FeedQueue,
initTracing,
+ LinkCrawlerQueue,
loadAllPlugins,
+ OpenAIQueue,
prepareQueue,
+ RuleEngineQueue,
+ SearchIndexingQueue,
shutdownTracing,
startQueue,
+ VideoWorkerQueue,
+ WebhookQueue,
} from "@karakeep/shared-server";
import serverConfig from "@karakeep/shared/config";
import logger from "@karakeep/shared/logger";
@@ -25,16 +35,46 @@ import { VideoWorker } from "./workers/videoWorker";
import { WebhookWorker } from "./workers/webhookWorker";
const workerBuilders = {
- crawler: () => CrawlerWorker.build(),
- inference: () => OpenAiWorker.build(),
- search: () => SearchIndexingWorker.build(),
- adminMaintenance: () => AdminMaintenanceWorker.build(),
- video: () => VideoWorker.build(),
- feed: () => FeedWorker.build(),
- assetPreprocessing: () => AssetPreprocessingWorker.build(),
- webhook: () => WebhookWorker.build(),
- ruleEngine: () => RuleEngineWorker.build(),
- backup: () => BackupWorker.build(),
+ crawler: async () => {
+ await LinkCrawlerQueue.ensureInit();
+ return CrawlerWorker.build();
+ },
+ inference: async () => {
+ await OpenAIQueue.ensureInit();
+ return OpenAiWorker.build();
+ },
+ search: async () => {
+ await SearchIndexingQueue.ensureInit();
+ return SearchIndexingWorker.build();
+ },
+ adminMaintenance: async () => {
+ await AdminMaintenanceQueue.ensureInit();
+ return AdminMaintenanceWorker.build();
+ },
+ video: async () => {
+ await VideoWorkerQueue.ensureInit();
+ return VideoWorker.build();
+ },
+ feed: async () => {
+ await FeedQueue.ensureInit();
+ return FeedWorker.build();
+ },
+ assetPreprocessing: async () => {
+ await AssetPreprocessingQueue.ensureInit();
+ return AssetPreprocessingWorker.build();
+ },
+ webhook: async () => {
+ await WebhookQueue.ensureInit();
+ return WebhookWorker.build();
+ },
+ ruleEngine: async () => {
+ await RuleEngineQueue.ensureInit();
+ return RuleEngineWorker.build();
+ },
+ backup: async () => {
+ await BackupQueue.ensureInit();
+ return BackupWorker.build();
+ },
} as const;
type WorkerName = keyof typeof workerBuilders;