]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/lib/worker/parent-process.ts
Lazy load piscina
[github/Chocobozzz/PeerTube.git] / server / lib / worker / parent-process.ts
CommitLineData
c53853ca
C
1import { join } from 'path'
2import Piscina from 'piscina'
daa0226b 3import { processImage } from '@server/helpers/image-utils'
c53853ca
C
4import { WORKER_THREADS } from '@server/initializers/constants'
5import { downloadImage } from './workers/image-downloader'
6
daa0226b 7let downloadImageWorker: Piscina
c53853ca
C
8
9function downloadImageFromWorker (options: Parameters<typeof downloadImage>[0]): Promise<ReturnType<typeof downloadImage>> {
daa0226b
C
10 if (!downloadImageWorker) {
11 downloadImageWorker = new Piscina({
12 filename: join(__dirname, 'workers', 'image-downloader.js'),
13 concurrentTasksPerWorker: WORKER_THREADS.DOWNLOAD_IMAGE.CONCURRENCY,
14 maxThreads: WORKER_THREADS.DOWNLOAD_IMAGE.MAX_THREADS
15 })
16 }
17
18 return downloadImageWorker.run(options)
c53853ca
C
19}
20
3a54605d
C
21// ---------------------------------------------------------------------------
22
daa0226b 23let processImageWorker: Piscina
3a54605d
C
24
25function processImageFromWorker (options: Parameters<typeof processImage>[0]): Promise<ReturnType<typeof processImage>> {
daa0226b
C
26 if (!processImageWorker) {
27 processImageWorker = new Piscina({
28 filename: join(__dirname, 'workers', 'image-processor.js'),
29 concurrentTasksPerWorker: WORKER_THREADS.PROCESS_IMAGE.CONCURRENCY,
30 maxThreads: WORKER_THREADS.PROCESS_IMAGE.MAX_THREADS
31 })
32 }
33
3a54605d
C
34 return processImageWorker.run(options)
35}
36
c53853ca 37export {
3a54605d
C
38 downloadImageFromWorker,
39 processImageFromWorker
c53853ca 40}