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)

questionAnswers(4)

yourAnswerToTheQuestion