Lazy load piscina
This commit is contained in:
parent
ccd62a4502
commit
daa0226b0a
1 changed files with 20 additions and 12 deletions
|
@ -1,28 +1,36 @@
|
||||||
import { join } from 'path'
|
import { join } from 'path'
|
||||||
import Piscina from 'piscina'
|
import Piscina from 'piscina'
|
||||||
|
import { processImage } from '@server/helpers/image-utils'
|
||||||
import { WORKER_THREADS } from '@server/initializers/constants'
|
import { WORKER_THREADS } from '@server/initializers/constants'
|
||||||
import { downloadImage } from './workers/image-downloader'
|
import { downloadImage } from './workers/image-downloader'
|
||||||
import { processImage } from '@server/helpers/image-utils'
|
|
||||||
|
|
||||||
const downloadImagerWorker = new Piscina({
|
let downloadImageWorker: Piscina
|
||||||
filename: join(__dirname, 'workers', 'image-downloader.js'),
|
|
||||||
concurrentTasksPerWorker: WORKER_THREADS.DOWNLOAD_IMAGE.CONCURRENCY,
|
|
||||||
maxThreads: WORKER_THREADS.DOWNLOAD_IMAGE.MAX_THREADS
|
|
||||||
})
|
|
||||||
|
|
||||||
function downloadImageFromWorker (options: Parameters<typeof downloadImage>[0]): Promise<ReturnType<typeof downloadImage>> {
|
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({
|
let processImageWorker: Piscina
|
||||||
filename: join(__dirname, 'workers', 'image-processor.js'),
|
|
||||||
concurrentTasksPerWorker: WORKER_THREADS.PROCESS_IMAGE.CONCURRENCY,
|
|
||||||
maxThreads: WORKER_THREADS.PROCESS_IMAGE.MAX_THREADS
|
|
||||||
})
|
|
||||||
|
|
||||||
function processImageFromWorker (options: Parameters<typeof processImage>[0]): Promise<ReturnType<typeof processImage>> {
|
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)
|
return processImageWorker.run(options)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue