La forma más fácil que conozco es usar el paquete "child_process" que viene empaquetado con el nodo.
Entonces puedes hacer algo como:
const spawn = require("child_process").spawn;
const pythonProcess = spawn('python',["path/to/script.py", arg1, arg2, ...]);
Entonces, todo lo que tiene que hacer es asegurarse de que está import sys
en su secuencia de comandos de Python, y luego puede acceder arg1
usando sys.argv[1]
, arg2
usando sys.argv[2]
, etc.
Para enviar datos de vuelta al nodo, simplemente haga lo siguiente en el script de Python:
print(dataToSendBack)
sys.stdout.flush()
Y luego el nodo puede escuchar los datos usando:
pythonProcess.stdout.on('data', (data) => {
// Do something with the data returned from python script
});
Dado que esto permite que se pasen múltiples argumentos a un script usando spawn, puede reestructurar un script de python para que uno de los argumentos decida qué función llamar, y el otro argumento pase a esa función, etc.
Espero que esto esté claro. Avísame si algo necesita aclaración.