aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/lib/worker
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2022-06-27 11:53:12 +0200
committerChocobozzz <me@florianbigard.com>2022-06-27 11:53:12 +0200
commit3a54605d4e7ec5b4f47131e8d23255be35b7beac (patch)
treefce9d34812a7638d4a0253b076f05aabd15a2ce9 /server/lib/worker
parent88edc66edadcab1b0372679e23bf2a7a6ff50131 (diff)
downloadPeerTube-3a54605d4e7ec5b4f47131e8d23255be35b7beac.tar.gz
PeerTube-3a54605d4e7ec5b4f47131e8d23255be35b7beac.tar.zst
PeerTube-3a54605d4e7ec5b4f47131e8d23255be35b7beac.zip
Process images in a dedicated worker
Diffstat (limited to 'server/lib/worker')
-rw-r--r--server/lib/worker/parent-process.ts16
-rw-r--r--server/lib/worker/workers/image-downloader.ts2
-rw-r--r--server/lib/worker/workers/image-processor.ts7
3 files changed, 23 insertions, 2 deletions
diff --git a/server/lib/worker/parent-process.ts b/server/lib/worker/parent-process.ts
index 18dabd97f..188001677 100644
--- a/server/lib/worker/parent-process.ts
+++ b/server/lib/worker/parent-process.ts
@@ -2,6 +2,7 @@ import { join } from 'path'
2import Piscina from 'piscina' 2import Piscina from 'piscina'
3import { WORKER_THREADS } from '@server/initializers/constants' 3import { WORKER_THREADS } from '@server/initializers/constants'
4import { downloadImage } from './workers/image-downloader' 4import { downloadImage } from './workers/image-downloader'
5import { processImage } from '@server/helpers/image-utils'
5 6
6const downloadImagerWorker = new Piscina({ 7const downloadImagerWorker = new Piscina({
7 filename: join(__dirname, 'workers', 'image-downloader.js'), 8 filename: join(__dirname, 'workers', 'image-downloader.js'),
@@ -13,6 +14,19 @@ function downloadImageFromWorker (options: Parameters<typeof downloadImage>[0]):
13 return downloadImagerWorker.run(options) 14 return downloadImagerWorker.run(options)
14} 15}
15 16
17// ---------------------------------------------------------------------------
18
19const processImageWorker = new Piscina({
20 filename: join(__dirname, 'workers', 'image-processor.js'),
21 concurrentTasksPerWorker: WORKER_THREADS.DOWNLOAD_IMAGE.CONCURRENCY,
22 maxThreads: WORKER_THREADS.DOWNLOAD_IMAGE.MAX_THREADS
23})
24
25function processImageFromWorker (options: Parameters<typeof processImage>[0]): Promise<ReturnType<typeof processImage>> {
26 return processImageWorker.run(options)
27}
28
16export { 29export {
17 downloadImageFromWorker 30 downloadImageFromWorker,
31 processImageFromWorker
18} 32}
diff --git a/server/lib/worker/workers/image-downloader.ts b/server/lib/worker/workers/image-downloader.ts
index 8d4a6b37e..4b32f723e 100644
--- a/server/lib/worker/workers/image-downloader.ts
+++ b/server/lib/worker/workers/image-downloader.ts
@@ -18,7 +18,7 @@ async function downloadImage (options: {
18 const destPath = join(destDir, destName) 18 const destPath = join(destDir, destName)
19 19
20 try { 20 try {
21 await processImage(tmpPath, destPath, size) 21 await processImage({ path: tmpPath, destination: destPath, newSize: size })
22 } catch (err) { 22 } catch (err) {
23 await remove(tmpPath) 23 await remove(tmpPath)
24 24
diff --git a/server/lib/worker/workers/image-processor.ts b/server/lib/worker/workers/image-processor.ts
new file mode 100644
index 000000000..0ab41a5a0
--- /dev/null
+++ b/server/lib/worker/workers/image-processor.ts
@@ -0,0 +1,7 @@
1import { processImage } from '@server/helpers/image-utils'
2
3module.exports = processImage
4
5export {
6 processImage
7}