已知问题

本页介绍 Cloud Endpoints Frameworks 中的已知问题。

Java 和 Python

本部分介绍影响 Java 版 Endpoints Frameworks 和 Python 版 Endpoints Frameworks 的已知问题。

请求超时上限

对于使用 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 中的已知问题。

旧版 (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-endpointsgoogle-endpoints-api-management,例如:

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 库会引起这种冲突。