2017-03-15 4 views
0

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を使用しました。

+0

Webcrawlerをノードの指示するパスの一部として削除するか、絶対パスを使用してみてください(私の推測になります)。しかし、ノードはすべてよくわかりません。 500が何であるかを知るためにも役立つかもしれません。 –

+0

Pythonスクリプトが目的の終了コードで終了するかどうかを確認してください。それ以外の場合は、結果パラメータとして渡された信号をクローズイベントにチェックします。コードの有効性をチェックするために、両方のパラメータを使用してさらに分析を行います。 https://nodejs.org/api/child_process.html#child_process_event_close – DmiN

答えて

0

/home/username/Webcrawler/webcrawler.py

+0

OPをご覧ください。これで問題は解決しましたか? – Devnetics

0

パスの問題のような音のようにそれは、絶対パスである必要があります。 また、チェックアウトpython-shellパッケージもあります。あなたの人生をはるかに簡単にします。

関連する問題