Python 2 は、コミュニティによるサポートを終了しました。Python 2 アプリを Python 3 に移行することをおすすめします。

Python 3 ランタイム用の構成ファイルの準備

App Engine スタンダード環境の Python 3 ランタイムでアプリを実行する前に、App Engine で使用する構成ファイルの一部を変更する必要があります。

  • app.yaml。このファイルには、ランタイムやアプリハンドラなど、アプリのコードに関する情報が含まれています。

  • appengine_config.py。Python 2 ランタイムは、このファイルを使用してサードパーティ ライブラリにアクセスし、定数とフック関数の値を提供します。Python 3 ランタイムでは、このファイルは使用されません。

app.yaml の更新

app.yaml 構成ファイル内の一部のフィールドの動作が変更されています。サポートが終了したフィールドを削除し、次の表で説明するように、他のフィールドを更新します。

フィールド 変更の種類 説明
app_engine_apis Python 3 のみに適用 Python 3 用 App Engine バンドル サービスにアクセスする場合は、true に設定する必要があります。
api_version
application_readable
builtins
サポートが終了しています Python 3 ランタイムでは適用できません。
threadsafe サポートが終了しています アプリケーションはすべてスレッドセーフであると推定されます。アプリケーションがスレッドセーフでない場合は、max_concurrent_requests1 に設定します。これにより費用が大幅に増加します。
libraries サポートが終了しています requirements.txt ファイルを使用して、依存関係の宣言およびクライアント ライブラリのインストールを行います。
handlers: login app_engine_apistrue の場合にサポート Python 3 用 App Engine バンドル サービスを使用していない場合は、ユーザー管理に Identity and Access Management(IAM)を使用してください。
handlers: script 変更されました Python 2 ランタイムでは、script フィールドを使用して、受信リクエストをアプリのスクリプトにルーティングします。

Python 3 ランタイムでは、script フィールドを使用する代わりに、アプリ内ルーティング(Flask や Django など)でウェブ フレームワークを使用する必要があります。

app.yaml ファイルを Python 3 ランタイムに移行するには、ファイルに静的ハンドラとスクリプト ハンドラが含まれているかどうかに応じて、次のいずれかの操作を行います。

  • app.yaml ファイルに静的ハンドラが含まれている場合は、次のいずれかの操作を行って、動的コンテンツに対するリクエストがアプリのスクリプトに確実にルーティングされるようにします。
    • すべての script フィールドを削除します。次に、entrypoint フィールドを追加して、アプリを実行するウェブサーバーを起動します。いずれの静的ハンドラとも一致しないリクエストは、entrypoint フィールドに指定したウェブサーバーに転送されます。ウェブサーバーとアプリのウェブ フレームワークがリクエストを正しいスクリプトにルーティングします。
    • すべての script フィールドの値を auto に置き換えます。App Engine はウェブサーバーでアプリを自動的に実行します(アプリがいくつかの要件を見てしている必要があります)。スクリプト ハンドラに一致するリクエストはすべてウェブサーバーに転送されます。ウェブサーバーとアプリのウェブ フレームワークがリクエストを正しいスクリプトにルーティングします。
    • app.yaml ファイルに静的ハンドラが含まれていない場合は、script フィールドをすべて削除します。アプリに対するすべてのリクエストは、アプリのウェブサーバーに転送され、アプリのフレームワークがリクエストを適切なスクリプトにルーティングします。必要に応じて、entrypoint フィールドを追加し、デフォルトの起動動作をカスタマイズできます。

静的ファイル処理はこれまでどおりご利用いただけます。

非推奨のフィールドを使用すると、App Engine はアプリをデプロイするときにエラーを返します。

appengine_config.py の削除

App Engine スタンダード環境の Python 2 ランタイムでは、appengine_config.py ファイルが使用されます。

このファイルは Python 3 ランタイムでは無視されます。その代わりに、Python 3 ランタイムでは、ネイティブ コードを使用する依存関係を含む、依存関係のインストールに標準 requirements.txt ファイルが使用されます。詳細については、Python 3 ランタイムで依存関係を指定するをご覧ください。