Самый простой способ, который я знаю, это использовать пакет child_process, который поставляется вместе с узлом.
Тогда вы можете сделать что-то вроде:
const spawn = require("child_process").spawn;
const pythonProcess = spawn('python',["path/to/script.py", arg1, arg2, ...]);
Затем все, что вам нужно сделать, это убедиться, что вы import sys
в своем скрипте Python, и тогда вы можете получить доступ arg1
с помощью sys.argv[1]
, arg2
с помощью sys.argv[2]
, и так далее.
Чтобы отправить данные обратно на узел, просто сделайте следующее в скрипте python:
print(dataToSendBack)
sys.stdout.flush()
И тогда узел может прослушивать данные, используя:
pythonProcess.stdout.on('data', (data) => {
// Do something with the data returned from python script
});
Поскольку это позволяет нескольким аргументам передаваться в скрипт с помощью spawn, вы можете реструктурировать скрипт на python так, чтобы один из аргументов решал, какую функцию вызывать, а другой аргумент был передан этой функции и т. Д.
Надеюсь, это было ясно. Дайте мне знать, если что-то нужно уточнить.