2014-05-22 16 views
5

Sto forking uno script Python con NodeJS e quando forked, per impostazione predefinita, NodeJS crea un IPC tra questo nuovo processo e il genitore.Processo Python biforcuto da NodeJS - Alternativa a process.send() per Python?

Con NodeJS, per inviare il messaggio da un bambino al genitore io process.send({msg : 'toto'})

Come posso fare che con Python?

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

+1

Sono state prese delle http://semanchuk.com/philip/posix_ipc/ –

+0

Ho appena controllato, quindi è un separato modulo? C'è un modo per usare ciò che Python fornisce, integrato, per provare ad interagire con NodeJS IPC? – Unitech

+0

Purtroppo non lo so. Se sapessi, vorrei pubblicare una risposta, non un commento come suggerimento :) –

risposta

12

Ok ho trovato, infine, è abbastanza facile. Si tratta solo di scrivere sul giusto descrittore di file.

sul parametro NodeJS lato, generare lo script del genere:

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

come canale 'IPC' è il parametro 4 °, si dovrà scrivere sul descrittore di file 3. Sul lato Python:

import os 

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

Fatto. Si riceverà il messaggio sul child.on (callback 'messaggio'.

Cheers!

+2

come leggere python leggere da node.js? Ho provato l'opzione 'ipc' su stdin, continua a leggere e blocca l'esecuzione – jerry

+1

https://github.com/extrabacon/python-shell - ha un send() che invia i dati a stdin del programma python – Amarsh