diff options
| author | Mohamed Bassem <me@mbassem.com> | 2026-01-25 22:27:05 +0000 |
|---|---|---|
| committer | Mohamed Bassem <me@mbassem.com> | 2026-02-01 10:44:54 +0000 |
| commit | 9decab898983bc132835d4c517fc02aa695cb4af (patch) | |
| tree | ad7092f1b123412fcbf89f85298f830285bd8a05 /apps | |
| parent | 95bfa5691ce0d43fbaa9c011df4ec9561635ff8d (diff) | |
| download | karakeep-9decab898983bc132835d4c517fc02aa695cb4af.tar.zst | |
refactor: lazy init background queues
Diffstat (limited to 'apps')
| -rw-r--r-- | apps/workers/index.ts | 60 |
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; |
