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
Исправьте непреднамеренный код. (ничего общего с фактической ошибкой)