X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Fworker%2Fparent-process.ts;h=7d410204786ab5fca790b6e198af13d370cfc978;hb=37ff5005b47b9df2933a0b8812609a6c41faa170;hp=188001677c83a0306f785ab7e0663542a438db83;hpb=83b1b7eaf1c04837f92de497e74895bee808eb83;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/worker/parent-process.ts b/server/lib/worker/parent-process.ts index 188001677..7d4102047 100644 --- a/server/lib/worker/parent-process.ts +++ b/server/lib/worker/parent-process.ts @@ -1,32 +1,75 @@ import { join } from 'path' import Piscina from 'piscina' +import { processImage } from '@server/helpers/image-utils' import { WORKER_THREADS } from '@server/initializers/constants' +import { httpBroadcast } from './workers/http-broadcast' 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[0]): Promise> { - 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.DOWNLOAD_IMAGE.CONCURRENCY, - maxThreads: WORKER_THREADS.DOWNLOAD_IMAGE.MAX_THREADS -}) +let processImageWorker: Piscina function processImageFromWorker (options: Parameters[0]): Promise> { + 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) } +// --------------------------------------------------------------------------- + +let parallelHTTPBroadcastWorker: Piscina + +function parallelHTTPBroadcastFromWorker (options: Parameters[0]): Promise> { + if (!parallelHTTPBroadcastWorker) { + parallelHTTPBroadcastWorker = new Piscina({ + filename: join(__dirname, 'workers', 'http-broadcast.js'), + concurrentTasksPerWorker: WORKER_THREADS.PARALLEL_HTTP_BROADCAST.CONCURRENCY, + maxThreads: WORKER_THREADS.PARALLEL_HTTP_BROADCAST.MAX_THREADS + }) + } + + return parallelHTTPBroadcastWorker.run(options) +} + +// --------------------------------------------------------------------------- + +let sequentialHTTPBroadcastWorker: Piscina + +function sequentialHTTPBroadcastFromWorker (options: Parameters[0]): Promise> { + if (!sequentialHTTPBroadcastWorker) { + sequentialHTTPBroadcastWorker = new Piscina({ + filename: join(__dirname, 'workers', 'http-broadcast.js'), + concurrentTasksPerWorker: WORKER_THREADS.SEQUENTIAL_HTTP_BROADCAST.CONCURRENCY, + maxThreads: WORKER_THREADS.SEQUENTIAL_HTTP_BROADCAST.MAX_THREADS + }) + } + + return sequentialHTTPBroadcastWorker.run(options) +} + export { downloadImageFromWorker, - processImageFromWorker + processImageFromWorker, + parallelHTTPBroadcastFromWorker, + sequentialHTTPBroadcastFromWorker }