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

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

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

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

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

app.yaml の更新

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

項目 変更の種類 説明
api_version
application_readable
builtins
サポートが終了しています Python 3 ランタイムには適用されません。
threadsafe サポートが終了しています アプリケーションはすべてスレッドセーフであると推定されます。アプリケーションがスレッドセーフでない場合は、max_concurrent_requests1 に設定します。これにより費用が大幅に増加します。
ライブラリ サポートが終了しています requirements.txt ファイルを使用して、依存関係の宣言およびクライアント ライブラリのインストールを行います。
ハンドラ: ログイン サポートが終了しています login」フィールドはサポートされていませんユーザー管理には Identity and Access Management(IAM)を使用します。
ハンドラ: スクリプト 修正 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 ランタイムでは、appengine_config.py ファイルは無視されます。

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