次の方法で共有


Azure Functions での Python 3.13 以降の変更点とガイダンス

この記事では、Python 3.13 以降の Azure Functions によって導入された重要な Python 機能の更新について説明します。 これらの変更には、ランタイム バージョン管理、パフォーマンスの強化、いくつかの削除された機能が含まれます。

Python ランタイムバージョンコントロール

Python 3.13 以降、Functions にはランタイム バージョンコントロールが導入されています。これは、アプリで使用される Functions Python ランタイムの特定のバージョンを対象にできる新しいオプトイン機能です。

バージョン管理が有効になっていない場合、アプリは、Functions によって管理される Python ランタイムの既定のバージョンで引き続き実行されます。 requirements.txt ファイルを変更して、最新のリリース バージョン、リリース前のバージョンを要求するか、アプリを特定のバージョンの Python ランタイムにピン留めできるようにする必要があります。

ランタイム バージョン管理を有効にするには、Python ランタイム パッケージへの参照を requirements.txt ファイルに追加します。ここで、パッケージに割り当てられた値によって、使用されるランタイム バージョンが決まります。

requirements.txt に追加する具体的なリファレンスは、Python プログラミング モデルによって異なります。次のいずれかの値を使用できます。

モデル バージョン パッケージ名
v2 azure-functions-runtime
v1 azure-functions-runtime-v1

次の表は、 requirements.txt ファイル内のこの設定のバージョン値に基づくバージョン管理の動作を示しています。

Version 行動
値が設定されていません azure-functions-runtime Python 3.13 以降のアプリは、使用可能な最新バージョンの Functions Python ランタイムで実行されます。 このオプションは、アプリが自動的に最新の安定したランタイム更新プログラムを受け取るので、プラットフォームの機能強化と機能を最新の状態に保つのに最適です。
特定のバージョンに固定する azure-functions-runtime==1.2.0 Python 3.13 以降のアプリは固定されたランタイム バージョンのままであり、自動更新は受け取りません。 代わりに、ランタイムの新機能、修正、および機能強化を利用するために、ピン留めされたバージョンを手動で更新する必要があります。 ピン留めは、安定性と予測可能性が不可欠な重要な運用ワークロードに推奨されます。 ピン留めすると、開発中にリリース前のランタイム バージョンでアプリをテストすることもできます。
パッケージ参照なし n/a azure-functions-runtimeを設定しないことで、Python 3.13 以降のアプリは、最新リリースバージョンの背後にある Python ランタイムの既定のバージョンで実行されます。 更新は、Functions によって定期的に行われます。 このオプションにより、安定性と広範な互換性が保証されます。 ただし、最新の機能と修正プログラムへのアクセスは、既定のバージョンが更新されるまで遅れます。

Python 3.13 以降のアプリでランタイム バージョン管理を使用する場合は、次の考慮事項に注意してください。

  • 運用アプリをプレリリース (アルファ、ベータ、または開発) ランタイム バージョンにピン留めしないでください。
  • Python ランタイムのリリース ノートを定期的に確認して、アプリの Python ランタイムに適用されている変更に注意するか、ピン留めされたバージョンを更新するタイミングを決定します。

Python 3.13 で導入されたその他の変更と機能強化

Python 3.13 では、パフォーマンスと信頼性を向上させ、ランタイムの動作に影響を与えるいくつかの機能強化が Functions に導入されています。

依存関係の分離が既定で有効になりました

アプリは完全な 依存関係の分離の恩恵を受けるようになりました。つまり、アプリに、 azure-functionsgrpcioなど、Python worker によっても使用される依存関係が含まれている場合、Python ランタイムが内部で別のバージョンを使用している場合でも、アプリは独自のバージョンを使用できます。

この分離により、バージョンの競合を防ぎ、カスタム パッケージとの互換性が向上します。

コールドスタート性能の向上

Python 3.13 では、Python 3.11 と比較して コールド スタート時間 が測定可能に短縮され、アプリの起動が高速化されます。

Orjsonサポートによる JSON 処理の高速化

Functions では、Rust で記述された高パフォーマンスの JSON ライブラリである Orjson の自動使用がサポートされるようになりました。 Orjsonがアプリの依存関係に含まれている場合、ランタイムは自動的に JSON シリアル化と逆シリアル化に使用します。コードに変更を加える必要はありません。

Orjsonを使用すると、HTTP API 呼び出しやイベント処理など、JSON 負荷の高いワークロードの待機時間を短縮し、スループットを高めることができます。 下位互換性を確保するために、標準の json ライブラリは、 Orjson が使用できない場合に使用されます。

HTTP ストリーミングの簡略化されたオプトイン

  • HTTP ストリーミング機能は、アプリ設定やその他の構成を変更しなくても使用できるようになりました。 機能レベルでオプトインする必要はありますが、機能を使用するために PYTHON_ENABLE_INIT_INDEXING 設定を追加する必要はなくなりました。

Python で機能のサポートが削除されました

Python 3.13 以降のバージョンを使用する場合、これらの機能は Functions でサポートされなくなりました。

  • Worker 拡張機能: カスタム worker 拡張機能は、Python 3.13 以降のランタイムと互換性がありません。 アプリがこれらの拡張機能に依存している場合は、サポートされている代替手段を使用して再評価または移行する必要があります。
  • 共有メモリ: 大きなペイロードの最適化に使用される共有メモリ機能は、Python 3.13 以降では使用できません。 既定では、すべての通信で gRPC ベースのメッセージングが使用されるようになりました。

関連記事