[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