本頁面包含了 Cloud Endpoints Frameworks 的已知問題。
Java 和 Python
本節說明已知會對 Endpoints Frameworks 的 Java 和 Python 版本造成影響的問題。
要求逾時上限
對於使用 Endpoints Frameworks 第 2 版的 API,要求逾時上限為 60 秒。
Endpoints Frameworks 遷移
將 API 遷移至 Endpoints Frameworks 第 2 版時,必須將 API 部署到新的 App Engine 應用程式。如果您重複使用舊的 App Engine 應用程式,開頭是第 1 版路徑 /_ah/spi
的要求可能會轉送至 Endpoints Frameworks 第 2 版後端,此後端預期的路徑應以 /_ah/api
開頭。
自動調整資源配置執行個體的效能不佳
App Engine 提供三種資源調度類型:基本、手動以及自動。Endpoints Frameworks 使用自動調整資源配置執行個體並不支援的背景執行緒。Endpoints Frameworks 必須與 Google 服務通訊,以進行配額檢查及回報 API 活動等工作。對於基本和手動資源調度執行個體,背景執行緒會執行通訊作業,以避免要求的執行速度變慢。但是自動調整資源配置執行個體並不支援背景執行緒。因此,系統會在要求期間與 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 的已知問題。
Java 適用的 Cloud Endpoints Frameworks - 1.0.14 以下版本
包括 Google 服務設定中的新欄位會導致 Cloud Endpoints Frameworks Java 程式庫在剖析服務設定時失敗的問題。如果使用 2024 年 12 月 5 日後建立的服務設定,會發生類似以下的錯誤:
Failed to parse the HTTP response as service configuration
com.google.api.config.ServiceConfigException: Failed to parse the HTTP response as service configuration
如要進一步瞭解如何升級至 1.0.15 以上版本,請參閱版本資訊。
舊版 (v1) Java Endpoints Frameworks
適用於 Java 的 Endpoints Frameworks 第 1 版已知存在一項錯誤,會導致系統在加註列舉時發生例外狀況。這個問題是由對舊版 Jackson 上的依附元件引起的。為解決這個問題,您必須遷移至 Endpoints Frameworks 第 2 版。
Python
本節說明 Python 適用的 Endpoints Frameworks 的已知問題。
錯誤訊息:ImportError: cannot import name locked_file
執行具有 requirements.txt
檔案的 pip install
時,系統可能會顯示 ImportError: cannot import name locked_file
錯誤訊息。這是因為 pip
安裝了與 google-endpoints-api-management
不相容的 oauth2client
套件版本。為解決這個問題,請確認您的 requirements.txt
檔案中首先出現 google-endpoints
和 google-endpoints-api-management
程式碼行,例如:
其他要求請加在這些程式碼行「之後」。
在本機測試時,API 傳回 404
錯誤
問題:當您使用 dev_appserver.py
在本機測試 API 時,所有端點都傳回 404
,但當您部署 API 至 App Engine 時,端點卻能正常回應。這個問題會出現在使用 Django-six 程式庫的應用程式中。
發生這個問題的原因,在於 python-future
程式庫 (適用於 Python 的 Endpoints Frameworks 程式庫和 Django-six 程式庫皆有這個程式庫) 之間發生版本衝突。目前尚未得知造成衝突的 Django-six 程式庫確切版本。