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

Uni*_*ech 5 python fork ipc node.js

我正在使用NodeJS分配Python脚本,并且在分叉时,默认情况下,NodeJS在此新进程和父进程之间创建一个IPC.

使用NodeJS,将消息从子节点发送给父节点 process.send({msg : 'toto'})

我怎么能用Python做到这一点?

http://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options

Uni*_*ech 12

好的,我发现它,终于很容易了.它只是写在正确的文件描述符上.

在NodeJS端参数上,像这样生成你的脚本:

var child = child_process.spawn('python', ['hello.py'], {
  stdio:[null, null, null, 'ipc']
});

child.on('message', function(message) {
  console.log('Received message...');
  console.log(message);
});
Run Code Online (Sandbox Code Playgroud)

由于'ipc'通道是第4个参数,你必须在filedescriptor 3上写.在Python方面:

import os

os.write(3, '{"dt" : "This is a test"}\n', "utf8")
Run Code Online (Sandbox Code Playgroud)

完成.您将在child.on上收到消息('message'回调.

干杯!

  • 如何从node.js读取python?我在stdin上尝试了`ipc`选项,它继续读取并阻止执行 (3认同)
  • 在Python 3中,必须使用`bytes`函数:`os.write(3, bytes('{"dt" : "This is a test"}\n', 'utf8'))` (2认同)