Najłatwiejszy sposób, jaki znam, to użycie pakietu „child_process” dostarczanego z węzłem.
Następnie możesz zrobić coś takiego:
const spawn = require("child_process").spawn;
const pythonProcess = spawn('python',["path/to/script.py", arg1, arg2, ...]);
Następnie wszystko, co musisz zrobić, to upewnić się, że masz import sys
w swoim skrypcie python, a następnie możesz uzyskać dostęp arg1
za pomocą sys.argv[1]
, arg2
za pomocą sys.argv[2]
i tak dalej.
Aby wysłać dane z powrotem do węzła, wykonaj następujące czynności w skrypcie python:
print(dataToSendBack)
sys.stdout.flush()
A następnie węzeł może nasłuchiwać danych za pomocą:
pythonProcess.stdout.on('data', (data) => {
// Do something with the data returned from python script
});
Ponieważ pozwala to na przekazanie wielu argumentów do skryptu za pomocą spawn, możesz zrestrukturyzować skrypt Pythona, aby jeden z argumentów decydował, którą funkcję wywołać, a drugi argument zostanie przekazany do tej funkcji itp.
Mam nadzieję, że to było jasne. Daj mi znać, jeśli coś wymaga wyjaśnienia.