Planet Python 日本語 フォロー グラハム・ダンプルトン:ラップチャーを用いたゼロコードトレーシング このテキストは、Pythonプログラムのソースコードを変更せずに、"wrapture"ツールを使用して観測およびトレースする方法を説明しています。当初、トレースはプログラムのエントリーポイントを編集する必要がありましたが、これは継承されたコードや共有コードでは望ましくありません。より柔軟なアプローチでは、個別の設定ファイルwrapture.tomlを使用して、何を観測し、どこにトレースデータを送信するかを指定します。この設定ファイルは、観測ターゲットとその関連メソッド、およびデータ編集ルールを定義します。wrapture.tomlファイルでは、モジュール内の特定のメソッド名またはグロブパターンをターゲットにすることができます。ツールは、python -m wraptureの後にプログラムスクリプトを実行することで実行され、プログラムを実行する前に設定が適用されます。この方法では、ソースコードを変更したアプローチと同じトレース出力が生成されますが、観測ロジックは外部に保たれます。長時間実行されるアプリケーションの場合、トレース出力はJSON Lines形式のファイル、例えばtrace.jsonlにリダイレクトできます。このファイル形式は、引数、結果、例外、タイミングを含む詳細なイベント情報をキャプチャするため、jqのような一般的なツールで簡単に処理できます。トレースをアクティブにしたままにする際の安全上の考慮事項には、ブロッキングを防ぐためのバウンドキューと、ライブオブジェクトを保持しないようにするための引数の要約が含まれます。コマンドラインからの直接実行が不可能な場合は、環境変数を通じてインタプリタの起動時にwraptureを注入するためにautowraptを使用できます。このブートストラップメカニズムは、一般的に本番環境ではなく、開発またはデバッグを目的としています。トレースが注入されると、アプリケーションを再起動することなく、wrapture.bootstrapからアクセス可能な機能を使用して、動的に制御(一時停止および再開、または完全に元に戻す)できます。wraptureの次のステップは、Webアプリケーションに見られるような、より複雑なアプリケーションユニットにこのトレース機能を適用することです。 Graham Dumpleton: Zero-code tracing with wrapture grahamdumpleton.me Planet Python 日本語 RSS thenote.app
wrapture.tomlを使用して、何を観測し、どこにトレースデータを送信するかを指定します。この設定ファイルは、観測ターゲットとその関連メソッド、およびデータ編集ルールを定義します。wrapture.tomlファイルでは、モジュール内の特定のメソッド名またはグロブパターンをターゲットにすることができます。ツールは、python -m wraptureの後にプログラムスクリプトを実行することで実行され、プログラムを実行する前に設定が適用されます。この方法では、ソースコードを変更したアプローチと同じトレース出力が生成されますが、観測ロジックは外部に保たれます。長時間実行されるアプリケーションの場合、トレース出力はJSON Lines形式のファイル、例えばtrace.jsonlにリダイレクトできます。このファイル形式は、引数、結果、例外、タイミングを含む詳細なイベント情報をキャプチャするため、jqのような一般的なツールで簡単に処理できます。トレースをアクティブにしたままにする際の安全上の考慮事項には、ブロッキングを防ぐためのバウンドキューと、ライブオブジェクトを保持しないようにするための引数の要約が含まれます。コマンドラインからの直接実行が不可能な場合は、環境変数を通じてインタプリタの起動時にwraptureを注入するためにautowraptを使用できます。このブートストラップメカニズムは、一般的に本番環境ではなく、開発またはデバッグを目的としています。トレースが注入されると、アプリケーションを再起動することなく、wrapture.bootstrapからアクセス可能な機能を使用して、動的に制御(一時停止および再開、または完全に元に戻す)できます。wraptureの次のステップは、Webアプリケーションに見られるような、より複雑なアプリケーションユニットにこのトレース機能を適用することです。