2014-05-22 14 views
5

Tôi đang giả mạo một kịch bản Python với NodeJS và khi được chia nhỏ, theo mặc định, NodeJS tạo một IPC giữa quy trình mới này và cha mẹ.Quá trình Python được chia nhỏ bởi NodeJS - Thay thế cho process.send() cho Python?

Với NodeJS, để gửi thông điệp từ một đứa trẻ để phụ huynh tôi process.send({msg : 'toto'})

Làm thế nào tôi có thể làm điều đó với Python?

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

+1

Bạn đã kiểm tra http://semanchuk.com/philip/posix_ipc/ –

+0

Tôi chỉ cần kiểm tra nó, vì vậy đó là một tách Có cách nào để sử dụng những gì Python cung cấp, xây dựng, để cố gắng tương tác với NodeJS IPC? – Unitech

+0

Thật không may tôi không biết.Nếu biết tôi sẽ gửi một câu trả lời, không phải là một bình luận như một gợi ý :) –

Trả lời

12

Ok tôi thấy nó, cuối cùng cũng khá dễ dàng. Nó chỉ là viết về mô tả tập tin bên phải.

Trên thông số NodeJS phụ, đẻ trứng kịch bản của bạn như thế:

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); 
}); 

Là kênh 'ipc' là tham số 4rd, bạn sẽ phải viết trên đặc tả tập tin 3. Về phía Python:

import os 

os.write(3, '{"dt" : "This is a test"}" + "\n", "utf8") 

Xong. Bạn sẽ nhận được thông báo trên child.on ('thông báo' gọi lại.

Cheers!

+2

làm thế nào về python đọc từ node.js? Tôi đã thử tùy chọn 'ipc' trên stdin, nó tiếp tục đọc và chặn thực thi – jerry

+1

https://github.com/extrabacon/python-shell - nó có một gửi() gửi dữ liệu đến stdin của chương trình python – Amarsh

Các vấn đề liên quan