Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

361
Visualizações
Cómo implementar la comunicación bidireccional entre nodejs y un subproceso de python

Tengo una aplicación node.js que necesita pasar la entrada a un programa de python y recuperar la entrada. Este proceso debe ocurrir con frecuencia y con la menor latencia posible. Por lo tanto, he elegido usar el paquete child_process. El código javascript está debajo

 child_process = require('child_process'); class RFModel { constructor () { this.answer = null; this.python = child_process.spawn('python3', ['random_forest_model.py']); this.python.stdout.on('data', (data)=>{ this.receive(data); }); } send (data) { this.answer = null; this.python.stdin.write(data); } receive (data) { data = data.toString('utf8') console.log(data) this.answer = data; } } const model = new RFModel() function timeout(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } (async ()=>{ await timeout(7000) model.send('asdf') })();

Y este es el código de Python:

 import sys sys.stdout.write('test') sys.stdout.flush() for line in sys.stdin: open("test.txt", "a") #janky test if input recieved sys.stdout.write(line) sys.stdout.flush()

El proceso de nodejs recibe la primera salida de "prueba" del proceso de python, pero no parece que python reciba ninguna entrada de nodejs, ya que no se está creando ningún archivo de texto o eco. ¿Qué estoy haciendo mal?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

No soy un experto en python, pero presumiblemente, for line in sys.stdin: está esperando una línea real (una serie de caracteres seguidos de un carácter de salto de línea). Pero, desde su programa nodejs no está enviando un carácter de salto de línea. Solo estás enviando una serie de caracteres. Entonces, su programa Python todavía está esperando que el carácter de salto de línea signifique el final de la línea.

Intenta cambiar esto:

 model.send('asdf')

a esto:

 model.send('asdf\n')

Cuando lo ejecuto ahora con este cambio, obtengo este resultado:

 test asdf

Donde hay un retraso antes de que aparezca el asdf .

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda