Добавлена очередь скачивания и конвертирования

This commit is contained in:
Book Pauk
2020-01-26 18:37:14 +07:00
parent b7568975e7
commit a50d61c3ce
2 changed files with 27 additions and 6 deletions

View File

@@ -3,11 +3,10 @@ const iconv = require('iconv-lite');
const chardet = require('chardet');
const he = require('he');
const LimitedQueue = require('../../LimitedQueue');
const textUtils = require('./textUtils');
const utils = require('../../utils');
let execConverterCounter = 0;
class ConvertBase {
constructor(config) {
this.config = config;
@@ -15,6 +14,7 @@ class ConvertBase {
this.calibrePath = `${config.dataDir}/calibre/ebook-convert`;
this.sofficePath = '/usr/bin/soffice';
this.pdfToHtmlPath = '/usr/bin/pdftohtml';
this.queue = new LimitedQueue(2, 20, 3);
}
async run(data, opts) {// eslint-disable-line no-unused-vars
@@ -33,11 +33,14 @@ class ConvertBase {
}
async execConverter(path, args, onData) {
execConverterCounter++;
let q = null;
try {
if (execConverterCounter > 10)
throw new Error('Слишком большая очередь конвертирования. Пожалуйста, попробуйте позже.');
q = await this.queue.get(() => {onData();});
} catch (e) {
throw new Error('Слишком большая очередь конвертирования. Пожалуйста, попробуйте позже.');
}
try {
const result = await utils.spawnProcess(path, {args, onData});
if (result.code != 0) {
let error = result.code;
@@ -54,7 +57,7 @@ class ConvertBase {
throw new Error(e);
}
} finally {
execConverterCounter--;
q.ret();
}
}