繁体   English   中英

Python [子]进程向节点[父]进程发送消息

[英]Python [child] process sending message to Node [parent] process

NodeJS派生的Python进程-Python的process.send()的替代方案?

我遵循了上面的解决方案,但似乎没有用(子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"))

我可以看到可能出了什么问题。 请帮忙。

我认为第四个参数需要是“ 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM