J'ai un C++
programme et un script Python
que je souhaite intégrer dans mon node.js
application Web.
Je veux les utiliser pour analyser les fichiers qui sont téléchargés sur mon site; cela peut prendre quelques secondes à traiter, donc j'éviterais également de bloquer l'application.
Comment puis-je simplement accepter le fichier puis exécuter simplement le C++
programme et script dans un sous-processus à partir d'un node.js
manette?
voir child_process . voici un exemple utilisant spawn
, qui vous permet d'écrire sur stdin et de lire depuis stderr/stdout lors de la sortie des données. Si vous n'avez pas besoin d'écrire dans stdin et que vous pouvez gérer toutes les sorties à la fin du processus, child_process.exec
offre une syntaxe légèrement plus courte pour exécuter une commande.
// 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');
});
Cela peut être une vieille question, mais certaines de ces références fourniront plus de détails et différentes façons d'inclure python dans NodeJS.
Il existe plusieurs façons de procéder.
npm install python-Shell
et voici le code
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
vous pouvez envoyer un message à python Shell en utilisant pyshell.send('hello');
vous pouvez trouver la référence API ici- https://github.com/extrabacon/python-Shell
deuxième façon - un autre paquet auquel vous pouvez vous référer est node python, vous devez faire npm install node-python
troisième façon - vous pouvez vous référer à cette question où vous pouvez trouver un exemple d'utilisation d'un processus enfant - Comment appeler des scripts/programmes externes à partir de node.js
quelques références supplémentaires - https://www.npmjs.com/package/python
si vous souhaitez utiliser une architecture orientée services - http://ianhinsdale.com/code/2013/12/08/communicating-between-nodejs-and-python/