Python process forked by NodeJS - Alternative to process.send() for Python?
我按照上面的解决方案但似乎没有工作(子python代码没有发送消息。这是我的代码:
const spawn = require('child_process').spawn;
var child = spawn('python3', ['child.py'], {
stdio:[null, null, null, 'pipe']
});
child.on('message', function(message) {
console.log('Received message...');
console.log(message);
});
和
# !/usr/bin/python3
import os
os.write(3, str.encode("HELLO"))
我可以看到可能出现的问题。请帮忙。
答案 0 :(得分:0)
我认为第四个参数需要是'ipc'而不是'pipe'来启用这种消息传递方式。
'ipc' - 创建用于传递消息/文件描述符的IPC通道 父母和孩子之间。 ChildProcess最多可以有一个IPC stdio文件描述符。设置此选项可启用 subprocess.send()方法。如果孩子将JSON消息写入此 文件描述符,subprocess.on('message')事件处理程序将是 在父母中触发。如果孩子是Node.js进程,那么 IPC通道的存在将启用process.send(), process.disconnect(),process.on('disconnect')和 孩子中的process.on('message')。
https://nodejs.org/api/child_process.html#child_process_options_stdio
从默认设置它的fork的描述(与其他语言的spawn不同):
stdio |请参阅child_process.spawn()的stdio。当这个 提供选项,它会覆盖静默。如果使用数组变体, 它必须包含一个值为'ipc'的项目,否则将出错 抛出。例如[0,1,2,'ipc']。
https://nodejs.org/api/child_process.html#child_process_child_process_fork_modulepath_args_options