Readlines de subprocesso do Python () trava
A tarefa que tento realizar é transmitir um arquivo ruby e imprimir a saída. (NOTA: Não quero imprimir tudo de uma 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 do arquivo funciona bem. A saída de hello / goodbye é impressa com o atraso de 2 segundos. Exatamente como o script deve funcionar. O problema é que readline () trava no final e nunca desiste. Eu nunca alcanço a última impressão.
Eu sei que há muitas perguntas como essa aqui, mas nenhuma delas me fez resolver o problema. Eu não sou assim em toda a coisa do subprocesso, então, por favor, me dê uma resposta mais concreta.
Saudações
editar
Corrigir código não intencional. (nada a ver com o erro real)