|
@@ -42,21 +42,32 @@ class ConvertBase {
|
|
throw new Error('Слишком большая очередь конвертирования. Пожалуйста, попробуйте позже.');
|
|
throw new Error('Слишком большая очередь конвертирования. Пожалуйста, попробуйте позже.');
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ abort = (abort ? abort : () => false);
|
|
|
|
+ const myAbort = () => {
|
|
|
|
+ return q.abort() || abort();
|
|
|
|
+ }
|
|
|
|
+
|
|
try {
|
|
try {
|
|
|
|
+ if (myAbort())
|
|
|
|
+ throw new Error('abort');
|
|
|
|
+
|
|
const result = await utils.spawnProcess(path, {
|
|
const result = await utils.spawnProcess(path, {
|
|
killAfter: 3600,//1 час
|
|
killAfter: 3600,//1 час
|
|
args,
|
|
args,
|
|
onData: (data) => {
|
|
onData: (data) => {
|
|
- q.resetTimeout();
|
|
|
|
|
|
+ if (queue.freed > 0)
|
|
|
|
+ q.resetTimeout();
|
|
onData(data);
|
|
onData(data);
|
|
},
|
|
},
|
|
//будем периодически проверять работу конвертера и если очереди нет, то разрешаем работу пинком onData
|
|
//будем периодически проверять работу конвертера и если очереди нет, то разрешаем работу пинком onData
|
|
onUsage: (stats) => {
|
|
onUsage: (stats) => {
|
|
- if (queue.freed > 1 && stats.cpu >= 10)
|
|
|
|
|
|
+ if (queue.freed > 0 && stats.cpu >= 10) {
|
|
|
|
+ q.resetTimeout();
|
|
onData('.');
|
|
onData('.');
|
|
|
|
+ }
|
|
},
|
|
},
|
|
onUsageInterval: 10,
|
|
onUsageInterval: 10,
|
|
- abort
|
|
|
|
|
|
+ abort: myAbort
|
|
});
|
|
});
|
|
if (result.code != 0) {
|
|
if (result.code != 0) {
|
|
const error = `${result.code}|FORLOG|, exec: ${path}, args: ${args.join(' ')}, stdout: ${result.stdout}, stderr: ${result.stderr}`;
|
|
const error = `${result.code}|FORLOG|, exec: ${path}, args: ${args.join(' ')}, stdout: ${result.stdout}, stderr: ${result.stderr}`;
|