asyncio Hintergrundprozess

Hallo, ich möchte in einem Pythonprogramm ein externes Programm ausführen. Ich kenne dazu popen, subprocess. Da ich aktuell mit Python 3.6 arbeite wäre mir eine Lösung mit asyncio lieber, damit arbeite ich aktuell aber das erste Mal und benötige dazu etwas Hilfe. Das externe Programm ist ein Commandline Tool, was einmal gestartet und als Dämonprozess läuft, bis ich es mittels kill (unter Linux) beende. Ausgaben werden auf stdout bzw stderr geschrieben. Mein Python Programm soll genau das machen, d.h. das Programm starten (nicht blockierend) und wenn __del__ meiner Klasse aufgerufen wird, das Programm beenden. Die Ausgaben sollen in einen Logger (aktuell zum Test reicht stdout) geleitet werden. Ich habe es mit class MyProgram: def __init(self): self._pid = await asyncio.create_subprocess_exec('myprogram','-arg1 -arg2', stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE) def __del__(self): self._pid.kill() probiert aber ich scheitere daran die Ausgabe umzuleiten, um überhaupt zu sehen, ob das Programm startet. Bin ich mit asyncio überhaupt richtig, oder wäre subsprocess evtl besser? Danke für die Hilfe Phil
participants (1)
-
Philipp Kraus