Создаю веб-приложение с помощью Express. С помощью модуля phantomjs делаю скриншоты сайта (в дочернем скрипте 'phantom-script.js'), затем из этих изображений, вызывая функцию generate_video, создаю видео.
app.get('/', function (req, res) {
var url = req.query.presentation;
var reg_url_base = new RegExp("http/");
//name of folder where will save screensots of site
var name_folder = url.replace(reg_url_base, '');
var type = req.query.format;
var childArgs = [
path.join(__dirname, 'phantom-script.js'),
duration,
url,
FPS,
name_folder
]
childProcess.execFile(binPath, childArgs, function(err, stdout, stderr) {
generate_video(res,type,name_folder);
})
});
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});
функция генерации видео
function generate_video(res,type,name_folder){
////код создания видео, неважно
res.json('Файл создавался ' + function_time + 'ms' + ', ' + 'местоположение: video_output/' + name_folder+'.' + type);
}
Нужно сделать так, чтобы сервер не создавал одновременно больше, например, 5 видео.
Для этого хочу использовать модуль
Kue
Я понял так:
создаем job и задание для этого job
app.get('/', function (req, res) {
/*............*/
childProcess.execFile(binPath, childArgs, function(err, stdout, stderr) {
var job_video_creationg = queue.create('video_creating', {
title: 'creating_video',
}).save( function(err){
if(err) console.log( 'error in creating of job with id' + job_video_creationg.id );
});
queue.process('video_creating', 200, function(job_video_creationg, done){
generate_video(res,type,name_folder, done);
});
})
});
В функцию generate_video передали параметр done, выполняем его в конце функции:
function generate_video(res,type,name_folder, done){
//генерация видео
res.json('Файл создавался ' + function_time + 'ms' + ', ' + 'местоположение: video_output/' + name_folder+'.' + type);
done();
}
Правильно ли я вообще понял, как оно работает? (видимо нет, так как после одного запроса и создания видео, при следующем запросе сервер падает)