Мне нужно выполнить команду, которая дает много вывода и требует много времени для выполнения (> 30 минут). Я думал использовать для этого subprocess.Popen. Мне нужно записать вывод команды, поэтому я передаю PIPE в stdout и stderr.
Проблема взаимоблокировки при использовании Popen.wait () хорошо задокументирована на многих форумах, поэтому Popen.communicate () - это предлагаемый способ избежать тупиковой ситуации. Проблема с этим решением заключается в том, что общение () блокируется до завершения команды. Мне нужно распечатать все, что приходит на stdout, пока команда выполняется. Если через 20 минут нет вывода, выполнение скрипта будет остановлено.
Вот некоторые ограничения, которые мне нужно соблюдать:
Есть способ сделать это?