Cách dễ nhất mà tôi biết là sử dụng gói "child_ process" đi kèm với nút.
Sau đó, bạn có thể làm một cái gì đó như:
const spawn = require("child_process").spawn;
const pythonProcess = spawn('python',["path/to/script.py", arg1, arg2, ...]);
Sau đó, tất cả những gì bạn phải làm là đảm bảo rằng bạn import sys
trong tập lệnh python của bạn, và sau đó bạn có thể truy cập arg1
bằng cách sử dụng sys.argv[1]
, arg2
sử dụng sys.argv[2]
, v.v.
Để gửi dữ liệu trở lại nút, chỉ cần thực hiện các thao tác sau trong tập lệnh python:
print(dataToSendBack)
sys.stdout.flush()
Và sau đó nút có thể lắng nghe dữ liệu bằng cách sử dụng:
pythonProcess.stdout.on('data', (data) => {
// Do something with the data returned from python script
});
Vì điều này cho phép nhiều đối số được chuyển đến một tập lệnh bằng cách sinh ra, bạn có thể cấu trúc lại một tập lệnh python để một trong các đối số quyết định hàm nào sẽ gọi và đối số khác được chuyển đến hàm đó, v.v.
Hy vọng điều này là rõ ràng. Hãy cho tôi biết nếu một cái gì đó cần làm rõ.