2009-04-03 5 views
0

Ich versuche, ein .py-Skript in einem CGI-Skript zu starten, während ein lokaler CGI-Server ausgeführt wird. Das CGI-Skript empfängt einfach einige Daten von Google Earth und übergibt sie an das .py-Skript, das gerade mit execfile ('script.py') am Ende des CGI-Skripts aufgerufen wird.Starten eines .py-Python-Skripts innerhalb eines CGI-Skripts

Das Skript wird vollständig ausgeführt, script.py enthält jedoch einige Druckanweisungen, die ich überwachen muss, während der Prozess ausgeführt wird. Alle Fehler in der .py-Datei im lokalen Host-Konsolenfenster und in den print-Anweisungen scheinen gepuffert zu sein.

Gibt es eine Möglichkeit, die Ausgabe von der .py in ein anderes Python-Konsolenfenster zu senden, während die localhost-Konsole ausgeführt wird?

Es scheint, als ob das Unterprozessmodul tun sollte, was ich brauche, aber ich war nur in der Lage, die Ausgabe an eine Variable oder eine Logdatei zu senden. Das ist in Ordnung, außer dass ich die Druckanweisungen in Echtzeit sehen muss.

Vielen Dank im Voraus

Antwort

1

Sie sagen, Sie sind ein Python-Skript von einem CGI-Skript starten, aber nicht angeben, welche das CGI-Skriptsprache geschrieben ist. Da CGI einfach eine Schnittstelle ist, ist es nicht klar ist, In welcher Sprache das CGI-Skript geschrieben ist. Ich gehe von Python aus, da dies am sinnvollsten ist.

Am besten wäre es, Ihre Nachrichten in eine Protokolldatei zu schreiben. In Ihrem "script.py" Datei, anstatt Druck verwenden, sollten Sie eine Protokolldatei zum Anhängen öffnen, etwa so:

logfile = file("/var/log/my-app-log.txt", "a") 

Dann, egal wo Sie eine print-Anweisung wie folgt aus:

print("Starting to do step 2...") 

ändern Sie es wie folgt auf eine logfile.write() Erklärung:

logfile.write("starting to do step 2...\n") 

Beachten Sie, dass Zeilenumbrüche getrennt als file.write hinzufügen müssen() nicht für Sie hinzufügt.

Dann können Sie sehen, was mit einem Befehl wie Schwanz in Ihrem Skript vor sich geht:

tail -f /var/log/my-app-log.txt 

Diese Daten zeigen, wie es um Ihre Protokolldatei angehängt wird.

+0

Sie könnten auch log4py oder eine solche Magie verwenden. Aber das Protokollieren ist ein Lebensretter. Das Skript, das den anderen startet, könnte auch ein guter Ort sein, um Ausnahmen zu erfassen und zu protokollieren. –

0

Verwenden Sie popen2 oder subprocess, um eine Konsole zu starten, während Sie Ihren Ausgabestream an diese Konsole umleiten.