Lazy load piscina

pull/5098/head
Chocobozzz 2022-06-28 09:09:03 +02:00
parent ccd62a4502
commit daa0226b0a
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
1 changed files with 20 additions and 12 deletions

View File

@ -1,28 +1,36 @@
import { join } from 'path'
import Piscina from 'piscina'
import { processImage } from '@server/helpers/image-utils'
import { WORKER_THREADS } from '@server/initializers/constants'
import { downloadImage } from './workers/image-downloader'
import { processImage } from '@server/helpers/image-utils'
const downloadImagerWorker = new Piscina({
filename: join(__dirname, 'workers', 'image-downloader.js'),
concurrentTasksPerWorker: WORKER_THREADS.DOWNLOAD_IMAGE.CONCURRENCY,
maxThreads: WORKER_THREADS.DOWNLOAD_IMAGE.MAX_THREADS
})
let downloadImageWorker: Piscina
function downloadImageFromWorker (options: Parameters<typeof downloadImage>[0]): Promise<ReturnType<typeof downloadImage>> {
return downloadImagerWorker.run(options)
if (!downloadImageWorker) {
downloadImageWorker = new Piscina({
filename: join(__dirname, 'workers', 'image-downloader.js'),
concurrentTasksPerWorker: WORKER_THREADS.DOWNLOAD_IMAGE.CONCURRENCY,
maxThreads: WORKER_THREADS.DOWNLOAD_IMAGE.MAX_THREADS
})
}
return downloadImageWorker.run(options)
}
// ---------------------------------------------------------------------------
const processImageWorker = new Piscina({
filename: join(__dirname, 'workers', 'image-processor.js'),
concurrentTasksPerWorker: WORKER_THREADS.PROCESS_IMAGE.CONCURRENCY,
maxThreads: WORKER_THREADS.PROCESS_IMAGE.MAX_THREADS
})
let processImageWorker: Piscina
function processImageFromWorker (options: Parameters<typeof processImage>[0]): Promise<ReturnType<typeof processImage>> {
if (!processImageWorker) {
processImageWorker = new Piscina({
filename: join(__dirname, 'workers', 'image-processor.js'),
concurrentTasksPerWorker: WORKER_THREADS.PROCESS_IMAGE.CONCURRENCY,
maxThreads: WORKER_THREADS.PROCESS_IMAGE.MAX_THREADS
})
}
return processImageWorker.run(options)
}