В Python, как захватить вывод блокирующего подпроцесса - PullRequest
0 голосов
/ 27 мая 2020

Моя цель - записать вывод « начало перекладины » в мой собственный журнал, который будет сохранен в базе данных. Но мой приведенный ниже код не работает для «старта перекладины». Я знаю, что причина может быть в том, что "начало перекладины" блокирует, поэтому оператор печати не будет выполняться. Как это исправить?

import logging
import subprocess
rootLogger = logging.getLogger()

my_cmd = "cat /etc/services" # works
my_cmd2 = "crossbar start" # does not work
proc = subprocess.Popen(my_cmd2 , stdout=subprocess.PIPE, shell=True)
(out, err) = proc.communicate()
print (out)
# rootLogger.debug('This is the main script. Here\'s the program output:')
# rootLogger.debug(out)
...