このページでは、Cloud Endpoints Frameworks の既知の問題について説明します。
Java と Python
このセクションでは、Java と Python の両方のバージョンの Endpoints Frameworks に影響する既知の問題について説明します。
リクエストの最大タイムアウト
Endpoints Frameworks バージョン 2 を使用する API の場合、最大リクエスト タイムアウトは 60 秒です。
Endpoints Frameworks への移行
API を Endpoints Frameworks バージョン 2 に移行するには、API を新しい App Engine アプリにデプロイする必要があります。古い App Engine アプリを再利用すると、バージョン 1 のパス /_ah/spi
で始まるリクエストが、/_ah/api
で始まるパスを想定している Endpoints Frameworks バージョン 2 のバックエンドにルーティングされることがあります。
自動スケーリング インスタンスのパフォーマンスが低い
App Engine には、基本、手動、自動の 3 種類のスケーリング タイプがあります。自動スケーリング インスタンスでは、Endpoints Frameworks が使用するバックグラウンド スレッドがサポートされていません。Endpoints Frameworks が割り当てをチェックし、特に API アクティビティをレポートするためには、Google サービスとの通信が必要です。基本スケーリング インスタンスと手動スケーリング インスタンスの場合、バックグラウンド スレッドがこの通信を行うことで、リクエストの速度低下を防ぎます。一方、自動スケーリング インスタンスはバックグラウンド スレッドをサポートしません。代わりに、Google サービスとの通信はリクエスト中に行われます。Endpoints Frameworks はまだ機能しますが、パフォーマンスが低下する可能性があります。
この問題が発生した場合は、別のスケーリング タイプを構成できます。App Engine のドキュメントで次のセクションをご覧ください。
末尾にスラッシュが付いているパスはサポートされない
gcloud endpoints services deploy
を使用して OpenAPI ドキュメントをデプロイすると、Cloud Endpoints では、末尾にスラッシュが付いているパスを含む OpenAPI ドキュメントが拒否されます。たとえば以下のようになります。
paths: "/echo/": post: description: "Echo back a given message."
Endpoints Frameworks では、Python メソッド デコレータまたは Java メソッド アノテーションで末尾のスラッシュを削除する必要があります。
Java
このセクションでは、Java 用 Endpoints Frameworks の既知の問題について説明します。
レガシー(v1)Java Endpoints Frameworks
Java 用 Endpoints Frameworks バージョン 1 には、enum にアノテーションが付いていると例外をスローするというバグがあります。この問題は、Jackson の古いバージョンに対する依存関係が原因で発生します。この問題を回避するには、Endpoints Frameworks バージョン 2 に移行する必要があります。
Python
このセクションでは、Python 用 Endpoints Frameworks の既知の問題について説明します。
エラー メッセージ: ImportError: cannot import name locked_file
pip install
を requirements.txt
ファイルで実行すると、「ImportError: cannot import name locked_file
」というエラー メッセージが表示されることがあります。この問題は、pip
でインストールした oauth2client
パッケージのバージョンが google-endpoints-api-management
との互換性がない場合に発生します。この問題を回避するには、次のように、google-endpoints
と google-endpoints-api-management
の行を requirements.txt
ファイルの先頭に配置してください。
他の要件は、これらの行の後に追加してください。
ローカルテスト時に API から 404
エラーが返される
症状: dev_appserver.py
を使用して API をローカルでテストすると、すべてのエンドポイントが 404
を返します。ただし、API を App Engine にデプロイすると、エンドポイントのレスポンスは想定したとおりになります。この問題は、Django-six ライブラリを使用するアプリケーションで確認されています。
この問題は、python-future
ライブラリ(Python 用 Endpoints Frameworks ライブラリと Django-six ライブラリの両方に含まれるもの)の間のバージョン競合が原因であると考えられます。競合を引き起こす Django-six ライブラリの正確なバージョンは、現時点では不明です。