2009-04-03 11 views
0

ローカルcgiサーバを実行しているときに、cgiスクリプト内から.pyスクリプトを起動しようとしています。 cgiスクリプトは、Google Earthからデータを受け取るだけで、cgiスクリプトの最後に配置されたexecfile( 'script.py')を使って現在呼び出されている.pyスクリプトに渡します。cgiスクリプト内から.py pythonスクリプトを起動する

スクリプトは完了まで実行されますが、script.pyにはプロセスの実行中に監視できる必要があるいくつかのprint文が含まれています。ローカルホストのコンソールウィンドウとprintステートメントへの.py印刷のエラーはすべてバッファリングされているようです。

localhostコンソールの実行中に.pyから別のpythonコンソールウィンドウに出力を送信する方法はありますか?

サブプロセスモジュールは必要な処理を実行する必要がありますが、出力を変数またはログファイルにのみ送信できたようです。これは、印刷文をリアルタイムで見る必要があることを除いて、問題ありません。事前

答えて

1

おかげであなたはCGIスクリプトからPythonスクリプトを起動していると言うが、あなたはCGIスクリプトがで書かれているどの言語を指定しないでください。CGIは、単にインターフェイスであるので、それははっきりしていませんどのような言語のCGIスクリプトが書かれています。私はPythonを仮定するつもりです、それは最も理にかなっているからです。

メッセージをログファイルに書き出すのが最も効果的です。あなたの「script.py」ファイルには、代わりに印刷を使用して、あなたがそうのように、追加のログファイルを開く必要があります。

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

その後、あなたはこのようなprint文持ってどこ:

print("Starting to do step 2...") 
をあなたのための1つを追加しませんが、個別に(file.writeとして改行を追加する必要があります

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

注):このようなlogfile.write()文に変更し

その後、あなたは尾のようなコマンドを使用して、スクリプトで何が起こっているか見ることができます:それはあなたのログファイルに付加されますよう

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

これは、データが表示されます。

+0

log4pyやそのような魔法を使うこともできます。しかし、ロギングは救命救助者です。もう一方のスクリプトを起動するスクリプトは、例外をキャッチしてログに記録するのに適しているかもしれません。 –

0

popen2またはsubprocessを使用してコンソールを起動し、出力ストリームをそのコンソールにリダイレクトします。

関連する問題