X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Fworker%2Fparent-process.ts;h=48b6c682be75536468fccbd3864b79a7423ff8ed;hb=dc9c9500bf5f0fd66906576ee3df4f1c49a1871d;hp=4bc7f26207f97a44852f03bc1e2c54d78a546534;hpb=a2fb5fb8b1007e3ce82e707917f5d9a37374e99b;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/worker/parent-process.ts b/server/lib/worker/parent-process.ts index 4bc7f2620..48b6c682b 100644 --- a/server/lib/worker/parent-process.ts +++ b/server/lib/worker/parent-process.ts @@ -1,7 +1,8 @@ import { join } from 'path' import Piscina from 'piscina' import { processImage } from '@server/helpers/image-utils' -import { WORKER_THREADS } from '@server/initializers/constants' +import { JOB_CONCURRENCY, WORKER_THREADS } from '@server/initializers/constants' +import { httpBroadcast } from './workers/http-broadcast' import { downloadImage } from './workers/image-downloader' let downloadImageWorker: Piscina @@ -34,7 +35,43 @@ function processImageFromWorker (options: Parameters[0]): P 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'), + // Keep it sync with job concurrency so the worker will accept all the requests sent by the parallelized jobs + concurrentTasksPerWorker: JOB_CONCURRENCY['activitypub-http-broadcast-parallel'], + maxThreads: 1 + }) + } + + 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'), + // Keep it sync with job concurrency so the worker will accept all the requests sent by the parallelized jobs + concurrentTasksPerWorker: JOB_CONCURRENCY['activitypub-http-broadcast'], + maxThreads: 1 + }) + } + + return sequentialHTTPBroadcastWorker.run(options) +} + export { downloadImageFromWorker, - processImageFromWorker + processImageFromWorker, + parallelHTTPBroadcastFromWorker, + sequentialHTTPBroadcastFromWorker }