Подтвердить что ты не робот

Как вызывать внешние скрипты/программы из node.js

У меня есть программа C++ и Python script, которую я хочу включить в мое веб-приложение node.js.

Я хочу использовать их для анализа файлов, загружаемых на мой сайт; это может занять несколько секунд, поэтому я бы не стал блокировать приложение.

Как я могу просто принять файл, а затем запустить программу C++ и script в подпроцессе с контроллера node.js?

4b9b3361

Ответ 1

см. child_process. вот пример с помощью spawn, который позволяет вам записывать на stdin и читать из stderr/stdout по мере вывода данных. Если вам не нужно писать в stdin, и вы можете обрабатывать весь вывод, когда процесс завершается, child_process.exec предлагает немного более короткий синтаксис для выполнения команды.

// with express 3.x
var express = require('express'); 
var app = express();
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(app.router);
app.post('/upload', function(req, res){
   if(req.files.myUpload){
     var python = require('child_process').spawn(
     'python',
     // second argument is array of parameters, e.g.:
     ["/home/me/pythonScript.py"
     , req.files.myUpload.path
     , req.files.myUpload.type]
     );
     var output = "";
     python.stdout.on('data', function(data){ output += data });
     python.on('close', function(code){ 
       if (code !== 0) {  
           return res.send(500, code); 
       }
       return res.send(200, output);
     });
   } else { res.send(500, 'No file found') }
});

require('http').createServer(app).listen(3000, function(){
  console.log('Listening on 3000');
});