C++
プログラムとnode.js
Webアプリに組み込むPython
スクリプトがあります。
私のサイトにアップロードされたファイルを解析するためにそれらを使用したいと思います。処理に数秒かかる場合があるため、アプリもブロックしないようにします。
ファイルを受け入れてから、C++
プログラムからサブプロセスでnode.js
コントローラーからスクリプトを実行するだけでよいのでしょうか。
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');
});
古い質問かもしれませんが、これらのリファレンスのいくつかは、NodeJSにpythonを含めるための詳細と異なる方法を提供します。
これを行うには複数の方法があります。
npm install python-Shell
_を実行することですここにコードがあります
_var PythonShell = require('python-Shell');
//you can use error handling to see if there are any errors
PythonShell.run('my_script.py', options, function (err, results) {
//your code
_
pyshell.send('hello');
を使用してpython Shellにメッセージを送信できます
ここでAPIリファレンスを見つけることができます- https://github.com/extrabacon/python-Shell
2番目の方法-参照できる別のパッケージはnode python、_npm install node-python
_を実行する必要があります
3番目の方法-この質問を参照すると、子プロセスの使用例を見つけることができます。 node.jsから外部スクリプト/プログラムを呼び出す方法
さらにいくつかの参照- https://www.npmjs.com/package/python
サービス指向アーキテクチャを使用する場合- http://ianhinsdale.com/code/2013/12/08/communicating-between-nodejs-and-python/