[Python-de] output = os.popen(...) hängt
Marcus Habermehl
bmh1980de at yahoo.de
Don Apr 28 20:51:00 CEST 2005
Hallo.
Wieder einmal os.popen() von mir.
Ist aber auch etwas linuxspeziefisch.
Ich habe ein Skript geschrieben, dass ein GUI zum Verwalten von
Init-Skripten ist. Dies geschieht mittels PyGTK.
Eigentlich funktioniert ja alles wunderprächtig. Hier liegt die Betonung
auf "eigentlich".
Bei zwei Init-Skripten mag das Python-Skript nicht ganz so, wie bei
allen anderen Skripten.
Das betrifft das Skript für MySQL und PostgreSQL. Und auch nur beim
Starten der Service.
MySQL braucht circa fünf Minuten, bis ich eine Reaktion erhalte und
PostgreSQL circa eine Minute.
Habe es mit diesen beiden Varianten probiert:
message = os.popen(rcd_dir+'/rc.'+service+' '+command+' 2>&1').read()
und
commandline = subprocess.Popen([rcd_dir+'/rc.'+service, command], stdout
= subprocess.PIPE,
stderr = subprocess.PIPE)
message = commandline.communicate()
In der Python-Shell funktioniert das Ganze auch wie es sollte. Innerhalb
von ein paar Sekunden hab ich meinen Output.
Daher behaupte ich mal, dass es nicht an meinem Skript liegt. Kann es
sein, dass das [My|Postgre]SQL irgendwie ein Problem hat, da der Service
nicht direkt aus einer Shell gestartet wird?
Ich weiß, dass es nicht 100 % was mit Python zu tun hat (vielleicht).
Aber ich weiß nicht, was, wie oder wo.
Abgesehen von den beiden Services funktioniert alles anstandslos. Und in
der Python-Shell funktionieren auch die Beiden. Muss ja dann irgendwie
mit dem GUI, bzw. PyGTK zusammenhängen. Auch wenn ich nicht wüsste, wie.
Hat da jemand eine Idee?
Gruß
Marcus