Líneas de lectura de subproceso de Python () se cuelgan
La tarea que trato de realizar es transmitir un archivo ruby e imprimir el resultado. (NOTA: No quiero imprimir todo a la vez)
main.py
from subprocess import Popen, PIPE, STDOUT
import pty
import os
file_path = '/Users/luciano/Desktop/ruby_sleep.rb'
command = ' '.join(["ruby", file_path])
master, slave = pty.openpty()
proc = Popen(command, bufsize=0, shell=True, stdout=slave, stderr=slave, close_fds=True)
stdout = os.fdopen(master, 'r', 0)
while proc.poll() is None:
data = stdout.readline()
if data != "":
print(data)
else:
break
print("This is never reached!")
ruby_sleep.rb
puts "hello"
sleep 2
puts "goodbye!"
Problema
Streaming el archivo funciona bien. La salida de saludo / despedida se imprime con el retraso de 2 segundos. Exactamente como el script debería funcionar. El problema es que readline () se bloquea al final y nunca se cierra. Nunca llego a la última impresión.
Sé que hay muchas preguntas como esta aquí, un flujo de pila, pero ninguna de ellas me hizo resolver el problema. No estoy tan involucrado en el subproceso, así que por favor, dame una respuesta más práctica / concreta.
Saludos
editar
Corrige el código no deseado. (nada que ver con el error real)