RSS惑星Python フォロー ダニエル・ロイ・グリーンフェルド:pyinstrument を使った Air アプリのプロファイリング FastAPIをベースにしたAirは、pyinstrumentを使用してパフォーマンスプロファイリングを実行できます。 これを有効にするには、air[standard]とpyinstrumentの両方をインストールします。 例コードは、環境変数PROFILINGに基づいてpyinstrumentを条件的に有効にする方法を示しています。これは、プロダクション環境でのパフォーマンスのオーバーヘッドを回避するために重要です。 ミドルウェア関数profile_requestはHTTPリクエストを傍受します。 profileクエリパラメータが存在する場合、pyinstrumentがプロファイリングを開始します。 call_nextによってリクエストが処理された後、pyinstrumentが停止し、プロファイリング結果のHTML出力を返します。これにより、パフォーマンスのボトルネックを視覚的に調査できます。 アプリケーションには、asyncio.sleepを使用して遅延をシミュレートするリンクが含まれるindexページがあります。これらのリンクは、プロファイリングをトリガーするためにprofile=1クエリパラメータでアクセスできます。 環境変数を永久に設定せずにプロファイリングを有効にしてアプリケーションを実行するには、開発サーバーのコマンドをPROFILING=1でprefixします。 たとえば、PROFILING=1 fastapi dev main.pyを実行すると、その実行にプロファイリングが有効になります。 その後、プロファイリング結果をhttp://localhost:8000にブラウザでアクセスして表示できます。 Daniel Roy Greenfeld: Using pyinstrument to profile Air apps daniel.feldroy.com
air[standard]とpyinstrumentの両方をインストールします。 例コードは、環境変数PROFILINGに基づいてpyinstrumentを条件的に有効にする方法を示しています。これは、プロダクション環境でのパフォーマンスのオーバーヘッドを回避するために重要です。 ミドルウェア関数profile_requestはHTTPリクエストを傍受します。profileクエリパラメータが存在する場合、pyinstrumentがプロファイリングを開始します。call_nextによってリクエストが処理された後、pyinstrumentが停止し、プロファイリング結果のHTML出力を返します。これにより、パフォーマンスのボトルネックを視覚的に調査できます。 アプリケーションには、asyncio.sleepを使用して遅延をシミュレートするリンクが含まれるindexページがあります。これらのリンクは、プロファイリングをトリガーするためにprofile=1クエリパラメータでアクセスできます。 環境変数を永久に設定せずにプロファイリングを有効にしてアプリケーションを実行するには、開発サーバーのコマンドをPROFILING=1でprefixします。 たとえば、PROFILING=1 fastapi dev main.pyを実行すると、その実行にプロファイリングが有効になります。 その後、プロファイリング結果をhttp://localhost:8000にブラウザでアクセスして表示できます。