Jak połączyć Node'a z Pythonem

Dzisiaj będzie krótko i zwięźle. Grunt to żeby zostawić trochę wiedzy w cyberprzestrzenii.

Jeśli zamarzy wam się kiedyś uruchomić zewnętrzny proces wewnątrz Node.js i czytać z niego to pewnie po szybkim rozeznaniu skończycie mniej więcej z takim kodem:

var exec = require('child_process').exec; 
var child = exec('python sample.py');
child.stdout.on('data', function(data) {
console.log(data); }); child.stderr.on('data', function(data) {
console.log(data); });

Jeśli to będzie proces działający długotrwale to czeka was spore rozczarowanie. Żadne dane nie spłyną do standardowego wyjścia dopóki się nie zakończy. Co ciekawe to dotyczy tylko Pythona. Pozostałe programy nie mają z tym problemu. Oczywiście skoro problem jest specyficzny dla Pythona to tam też jest rozwiązanie. Wystarczy użyć dodatkowej opcji:

python -u sample.py

Nie rozgryzłem dlaczego np. terminal nie ma z tym problemu, ale dzisiaj nie mam już do tego głowy.