プロセスの生成に Python 2.6 のマルチプロセッシング モジュールを利用する場合、通常、データが漏洩しないようにモジュール レベルのロガーが各プロセスに割り当てられます。共有 sys.stderr ファイルハンドルが破損しています。ただし、すべての依存モジュールもこのマルチプロセッシング対応のロギング手法を確実に使用するようにすることは、フレームワークの内外で面倒な場合があります。
この問題に対処するために、代替ソリューションが提案されました。
パイプを使用してすべてのロギング呼び出しを親プロセスにリダイレクトするカスタム ログ ハンドラーが作成されました。 RotatingFileHandler 用に特別に設計されたこのアプローチは、複数の子プロセスからログを効果的に収集し、親プロセスに統合します。
実装には以下が含まれます。
<code class="python">from logging.handlers import RotatingFileHandler import multiprocessing, threading, logging, sys, traceback class MultiProcessingLog(logging.Handler): # ... Implementation as per above ...</code>
このカスタム ログ ハンドラーは同時実行のためにキューを利用します。およびエラー回復により、プロセス間で信頼性の高いログ記録が保証されます。
以上がPython マルチプロセッシングで信頼性の高いロギングを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。