3

クラスターで Parallel Python を使用する科学計算の保守を継承しました。Parallel Python では、ジョブが ppserver に送信されます。ppserver は (この場合) 他のコンピューターで既に実行されている ppserver プロセスと対話し、タスクを ppworkers プロセスに分配します。

標準ライブラリのログ モジュールを使用して、ppserver に送信された関数からのエラーとデバッグ情報をログに記録したいと考えています。これらの ppworker は (別々のコンピューターで) 別々のプロセスとして実行されるため、ログを適切に構成する方法がわかりません。プロセスごとに個別のファイルにログを記録する必要がありますか? たぶん、すべてを改善するログハンドラーがあるでしょうか?

また、どのコンピュータのどのプロセスでエラーが発生したかについてのレポートも必要ですが、ログインを記述しているコードはおそらくこれらのことを認識していません。多分それはppserverレベルで起こっているべきですか?

(Parallel Python Forums にクロス投稿された質問のバージョン。非 SO ユーザーからこれについて何かを得た場合は、ここに回答を投稿します)

4

2 に答える 2

6

問題を解決する 1 つの方法は、次の手順を実行することです。

  1. 各ワーカー プロセスで、 a を使用しlogging.handlers.SocketHandlerて、ワーカーから専用のロガー プロセスにイベントを送信します。
  2. https://docs.python.org/3/howto/logging-cookbook.html#sending-and-recoming-のドキュメントに記載されている作業例に基づいて、ソケットでログ イベントをリッスンする専用のロガー プロセスを作成します。ネットワーク全体のログイベント
  3. 利益 ;-)

ワーカー関数で例外をキャッチしてログに記録すると、すべてのワーカーのエラーを 1 か所で確認できるはずです。

于 2010-11-03T12:20:13.250 に答える
2

PythonloggingsocketAPI を使用します。ここの例に従ってください。

どこかでロギング専用を開始し、ロギングを実行しているマシンのホスト名とポートを指定して、他の各ワーカーでppworker新しいワーカーを作成するだけです。logging.Loggerlogging.SocketHandlerppworker

syslog サーバーを実行している場合は、ここsyslogに記載されている Python のモジュールを使用することもできます。

于 2010-11-03T13:48:32.447 に答える