Podproces Pythona readlines () zawiesza się

Zadaniem, które staram się wykonać, jest strumieniowanie pliku ruby ​​i wydrukowanie wyniku. (UWAGA: Nie chcę drukować wszystkiego naraz)

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

Przesyłanie strumieniowe pliku działa poprawnie. Wyjście hello / goodbye jest drukowane z 2-sekundowym opóźnieniem. Dokładnie tak, jak powinien działać skrypt. Problem polega na tym, że readline () zawiesza się w końcu i nigdy nie kończy pracy. Nigdy nie dotarłem do ostatniego wydruku.

Wiem, że jest tu wiele pytań, takich jak ten stackoverflow, ale żaden z nich nie rozwiązał problemu. Nie jestem w tym wszystkim w podprocesie, więc proszę dać mi bardziej praktyczną / konkretną odpowiedź.

pozdrowienia

edytować

Napraw niezamierzony kod. (nic wspólnego z rzeczywistym błędem)

questionAnswers(4)

yourAnswerToTheQuestion