NodeからPythonスクリプトを実行する子プロセスを生成しようとしています。私は次の要求を受け取ります:ノードから子プロセスを起動してpythonスクリプトを実行すると、返されます。
/webcrawler?source=http://www.pygamers.com&method=BFS&nodeCount=3&depth=0&keyword=game
私のパラメータが正しく入力されていることを確認しました。私は私のPythonスクリプト、ウェブクローラのディレクトリにあるWebcrawler.py
を呼び出しています
app.get('/webcrawler', function(req, res){
var python = require('child_process').spawn(
'python',
["WebCrawler/Webcrawler.py"
, req.query.source
, req.query.method
, req.query.nodeCount
, req.query.depth
, req.query.keyword]
);
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);
});
});
:ここapp.js
でリクエストを処理するように設定私のコードです。 WebCrawlerディレクトリはapp.js
と同じディレクトリにあります。
しかし、この要求は私に500を与えていますが、私はなぜそれを理解することができませんでした。子プロセスを間違って生成する必要があるようです。私はそのためにモデルとしてthis answerを使用しました。
Webcrawlerをノードの指示するパスの一部として削除するか、絶対パスを使用してみてください(私の推測になります)。しかし、ノードはすべてよくわかりません。 500が何であるかを知るためにも役立つかもしれません。 –
Pythonスクリプトが目的の終了コードで終了するかどうかを確認してください。それ以外の場合は、結果パラメータとして渡された信号をクローズイベントにチェックします。コードの有効性をチェックするために、両方のパラメータを使用してさらに分析を行います。 https://nodejs.org/api/child_process.html#child_process_event_close – DmiN