2016-07-18 4 views
0

Ich versuche, meine Python-Programme auf meinem Express-Server mit Kind-Prozesse ausführen. Die Methode funktioniert, wenn es sich um einen einfachen NodeJS handelt, aber nicht an meinem API-Endpunkt.Laichen Kind Prozess mit Express-Endpunkt

var spawn = require('child_process').spawn, 
    a = spawn('python', ['test.py']); 

router.get('/test', function(req, res, next) { 

a.stdout.on('data', function(data){ 

    console.log(data.toString()); 

    }); 

    a.stdin.write(JSON.stringify("Hello")); 
    a.stdin.end(); 
}); 

Das Python-Programm druckt nur hallo.

Was ist das Problem hier und wie behebe ich es?

Vielen Dank!

Antwort

3

Ohne Ihren test.py Quellcode zu sehen, nehme ich an, dass test.py beendet wird, nachdem es alle seine Daten ausgibt. Wenn dies der Fall ist, müssen Sie Ihren Anruf zu spawn()innerhalb der Route-Handler verschieben.

Wenn dieser Route-Handler häufig aufgerufen wird, müssen Sie eventuell eine Art Queue/Pool verwenden, um festzulegen, wie viele Prozesse zu einem bestimmten Zeitpunkt generiert werden. Ohne das könnten Sie Systemressourcen ausschöpfen.

+0

Die Python-Datei hat einfach nur eine Zeile im Haupt: 'print (" Hello ")' – QuikProBroNa

+0

Und es funktioniert immer noch nicht ... – QuikProBroNa

+0

"Nicht funktioniert" sagt mir nicht viel. Gibt es Fehler? Was passiert oder passiert nicht? – mscdex

Verwandte Themen