既知の問題

このページでは、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 installrequirements.txt ファイルで実行すると、「ImportError: cannot import name locked_file」というエラー メッセージが表示されることがあります。この問題は、pip でインストールした oauth2client パッケージのバージョンが google-endpoints-api-management との互換性がない場合に発生します。この問題を回避するには、次のように、google-endpointsgoogle-endpoints-api-management の行を requirements.txt ファイルの先頭に配置してください。

google-endpoints==4.8.0
google-endpoints-api-management==1.11.1
# Newer versions of rsa module are incompatible with Python 2.7
rsa==4.5; python_version < '3'

他の要件は、これらの行の後に追加してください。

ローカルテスト時に API から 404 エラーが返される

症状: dev_appserver.py を使用して API をローカルでテストすると、すべてのエンドポイントが 404 を返します。ただし、API を App Engine にデプロイすると、エンドポイントのレスポンスは想定したとおりになります。この問題は、Django-six ライブラリを使用するアプリケーションで確認されています。

この問題は、python-future ライブラリ(Python 用 Endpoints Frameworks ライブラリと Django-six ライブラリの両方に含まれるもの)の間のバージョン競合が原因であると考えられます。競合を引き起こす Django-six ライブラリの正確なバージョンは、現時点では不明です。