Ich erwäge pexpect
(völlig offen für Alternativen, wenn es bessere gibt, die mir nicht bekannt sind) in einem unserer Deploy-Skript Wrapper - aber ich brauche eine Möglichkeit, die Ausgabe in Echtzeit zu lesen, nicht nur Sobald wir die EOF
getroffen haben. Da es sich um ein Bereitstellungspaket handelt, das für alle Umgebungen verwendet wird, müssen wir Probleme sofort erkennen, wenn sie auftreten (und möglicherweise den Notausgang treffen, wenn es wirklich schlecht ist).Wie kann ich Pexpect in Echtzeit analysieren?
Gibt es so etwas, das ich verwenden kann? Im Idealfall würde Ich mag Nutzung unserer bereits vorhandenen Logger machen ..
def SetupLogging():
# the logger
# set to DEBUG since the reports should already give
# any information we're looking for at a glance
global log
log = logging.getLogger('ansiwrap')
log.setLevel(logging.DEBUG)
# create file handler which logs everything
fh = logging.FileHandler('ansiwrap.debug', mode='w')
fh.setLevel(logging.DEBUG)
# create console handler with a higher log level
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
# create formatter and add it to the handlers
formatter = logging.Formatter('[%(asctime)s] | %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
fh.setFormatter(formatter)
# add the handlers to logger
log.addHandler(ch)
log.addHandler(fh)
Für Vollständigkeit, hier ist ein Beispiel-Implementierung, aber es scheint mir klobig:
child = pexpect.spawn(cmd)
while True:
try:
child.expect('\n')
print(child.before)
except pexpect.EOF:
break