feat: give ebook conversions their own worker timeout and register the converter
This commit is contained in:
+5
-2
@@ -12,6 +12,7 @@ import { registerIcoConverter } from './converters/ico.js';
|
||||
import { registerHeicConverter } from './converters/heic.js';
|
||||
import { registerFontConverter } from './converters/font.js';
|
||||
import { registerDfontConverter } from './converters/dfont.js';
|
||||
import { registerEbookConverter } from './converters/ebook.js';
|
||||
import { findPendingJobs, markProcessing, markDone, markFailed } from './jobs/jobRepository.js';
|
||||
|
||||
const JOB_TIMEOUT_MS = 60000;
|
||||
@@ -36,10 +37,11 @@ async function processJob(prisma, config, job) {
|
||||
throw new Error(`No converter registered for ${job.sourceFormat} -> ${job.targetFormat}`);
|
||||
}
|
||||
|
||||
const timeoutMs = entry.family === 'ebook' ? config.ebookJobTimeoutMs : JOB_TIMEOUT_MS;
|
||||
const startedAt = Date.now();
|
||||
await withTimeout(
|
||||
entry.convert(inputFilePath, outputFilePath, { quality: job.quality, iconSize: job.iconSize }),
|
||||
JOB_TIMEOUT_MS
|
||||
entry.convert(inputFilePath, outputFilePath, { quality: job.quality, iconSize: job.iconSize, timeoutMs }),
|
||||
timeoutMs
|
||||
);
|
||||
const conversionDurationSeconds = (Date.now() - startedAt) / 1000;
|
||||
const { size: outputSizeBytes } = await fs.stat(outputFilePath);
|
||||
@@ -86,6 +88,7 @@ async function main() {
|
||||
registerHeicConverter();
|
||||
registerFontConverter();
|
||||
registerDfontConverter();
|
||||
registerEbookConverter();
|
||||
|
||||
startWorker(prisma, config);
|
||||
console.log(`Worker started, polling every ${config.workerPollIntervalMs}ms`);
|
||||
|
||||
Reference in New Issue
Block a user