Python подпроцесс readlines () зависает

Задача, которую я пытаюсь выполнить, - это потоковая передача файла ruby и распечатка вывода. (NOTE: Я не хочу распечатывать все сразу)

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!"

Problem

Потоковый файл работает нормально. Вывод hello / goodbye печатается с задержкой в 2 секунды. Точно так же, как скрипт должен работать. Проблема в том, что readline () зависает в конце и никогда не завершается. Я никогда не доходил до последнего отпечатка.

Я знаю, что здесь много таких вопросов, как переполнение стека, но ни один из них не помог мне решить проблему. Я не так уж во всем этом подпроцессе, поэтому, пожалуйста, дайте мне более практический / конкретный ответ.

С уважением

edit

Исправьте непреднамеренный код. (ничего общего с фактической ошибкой)

Ответы на вопрос(4)

Ваш ответ на вопрос