python: subprocesso sem bloqueio, verifique stdout

Ok, então o problema que estou tentando resolver é o seguinte:

Preciso executar um programa com alguns sinalizadores definidos, verificar seu progresso e reportar de volta para um servidor. Portanto, preciso do meu script para evitar o bloqueio enquanto o programa é executado, mas também preciso poder ler a saída. Infelizmente, não acho que nenhum dos métodos disponíveis no Popen leia a saída sem bloquear. Eu tentei o seguinte, que é um pouco hack-y (podemos ler e gravar no mesmo arquivo a partir de dois objetos diferentes?)

import time
import subprocess
from subprocess import *
with open("stdout.txt", "wb") as outf:
    with open("stderr.txt", "wb") as errf:
        command = ['Path\\To\\Program.exe', 'para', 'met', 'ers']
        p = subprocess.Popen(command, stdout=outf, stderr=errf)
        isdone = False
        while not isdone :
            with open("stdout.txt", "rb") as readoutf: #this feels wrong
                for line in readoutf:
                    print(line)
            print("waiting...\\r\\n")
            if(p.poll() != None) :
                done = True
            time.sleep(1)
        output = p.communicate()[0]    
        print(output)

Infelizmente, Popen parece não escrever no meu arquivo até depois que o comando termina.

Alguém sabe uma maneira de fazer isso? Não sou dedicado ao uso de python, mas preciso enviar solicitações POST para um servidor no mesmo script, portanto, o python parecia uma escolha mais fácil do que, por exemplo, scripts de shell.

Obrigado! Vai

questionAnswers(2)

yourAnswerToTheQuestion