Optimize jellyfin scanner

- Include changes / unfinished subsonic scanner
This commit is contained in:
jeffvli
2022-10-12 13:39:59 -07:00
parent 8aedd94033
commit 02ef79dcb2
14 changed files with 1161 additions and 954 deletions
+5
View File
@@ -0,0 +1,5 @@
import { scannerQueue } from './scanner.queue';
export const queue = {
scanner: scannerQueue,
};
+57
View File
@@ -0,0 +1,57 @@
import { Task } from '@prisma/client';
import Queue from 'better-queue';
import { prisma } from '../../lib';
interface QueueTask {
fn: any;
id: string;
task: Task;
}
export const scannerQueue: Queue = new Queue(
async (task: QueueTask, cb: any) => {
const result = await task.fn();
return cb(null, result);
},
{
afterProcessDelay: 1000,
cancelIfRunning: true,
concurrent: 1,
filo: false,
maxRetries: 5,
maxTimeout: 600000,
retryDelay: 2000,
}
);
scannerQueue.on('task_finish', async (taskId) => {
await prisma.task.update({
data: {
completed: true,
isError: false,
progress: null,
},
where: { id: taskId },
});
});
scannerQueue.on('task_failed', async (taskId, errorMessage) => {
const dbTaskId = taskId.split('(')[1].split(')')[0];
console.log('errorMessage', errorMessage);
await prisma.task.update({
data: {
completed: true,
isError: true,
message: errorMessage,
},
where: { id: dbTaskId },
});
});
scannerQueue.on('drain', async () => {
await prisma.task.updateMany({
data: { completed: true, progress: null },
where: { completed: false },
});
});