Problemas conhecidos

Esta página contém problemas conhecidos nos frameworks do Cloud Endpoints.

Java e Python

Esta secção descreve problemas conhecidos que afetam as versões Java e Python dos Frameworks de Endpoints.

Limite de tempo máximo do pedido

Para APIs que usam a versão 2 dos Frameworks de Endpoints, o tempo limite máximo do pedido é de 60 segundos.

Migração do Endpoints Frameworks

Quando migra a sua API para a versão 2 dos Frameworks de Endpoints, tem de implementar a API numa nova app do App Engine. Se reutilizar a antiga app do App Engine, os pedidos que começam com o caminho da versão 1, /_ah/spi, podem ser encaminhados para o back-end da versão 2 dos Frameworks de Endpoints, que espera que os caminhos comecem com /_ah/api.

Desempenho fraco em instâncias de escala automática

O App Engine oferece três tipos de escalabilidade: básica, manual e automática. Os Frameworks de Endpoints usam threads em segundo plano, que as instâncias de escalamento automático não suportam. Os Frameworks de Endpoints têm de comunicar com os serviços Google para verificar as quotas e comunicar a atividade da API, entre outras coisas. Para as instâncias de escalabilidade básica e manual, um segmento em segundo plano realiza esta comunicação para evitar a lentidão dos pedidos. No entanto, as instâncias de escalamento automático não suportam threads em segundo plano. Em alternativa, a comunicação com os serviços Google ocorre durante o pedido. Os frameworks de endpoints continuam a funcionar, mas com um desempenho potencialmente reduzido.

Devido a este problema, é recomendável configurar outro tipo de dimensionamento. Consulte as seguintes secções na documentação do App Engine:

Os caminhos com barras invertidas finais não são suportados

Quando implementa um documento OpenAPI através do gcloud endpoints services deploy, o Cloud Endpoints rejeita documentos OpenAPI que incluem caminhos com uma barra final, por exemplo:

paths:
  "/echo/":
    post:
      description: "Echo back a given message."

Nos Frameworks de Endpoints, tem de remover a barra invertida final no decorador do método Python ou na anotação do método Java.

Java

Esta secção descreve problemas conhecidos nos Endpoints Frameworks para Java.

Cloud Endpoints Frameworks para Java – versão 1.0.14 ou anterior

Inclui um problema em que os novos campos na configuração do serviço Google fazem com que a biblioteca Java dos frameworks do Cloud Endpoints falhe ao analisar a configuração do serviço. Os erros serão semelhantes aos seguintes quando usar configurações de serviço criadas após 5 de dezembro de 2024:

Failed to parse the HTTP response as service configuration
com.google.api.config.ServiceConfigException: Failed to parse the HTTP response as service configuration

Consulte as notas de lançamento para mais informações sobre a atualização para a versão 1.0.15 ou posterior.

Frameworks de pontos finais Java antigos (v1)

A versão 1 dos Frameworks de Endpoints para Java tem um erro que gera uma exceção quando uma enumeração é anotada. Este problema é causado por uma dependência de uma versão antiga do Jackson. Para contornar este problema, tem de migrar para a versão 2 dos frameworks de endpoints.

Python

Esta secção descreve problemas conhecidos nos Endpoints Frameworks para Python.

Mensagem de erro: ImportError: cannot import name locked_file

Quando executa pip install com um ficheiro requirements.txt, pode receber uma mensagem de erro ImportError: cannot import name locked_file. O problema ocorre quando pip instala uma versão do pacote oauth2client que é incompatível com google-endpoints-api-management. Para contornar este problema, certifique-se de que as linhas google-endpoints e google-endpoints-api-management aparecem primeiro no ficheiro requirements.txt, por exemplo:

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'

Adicione outros requisitos depois destas linhas.

A API devolve erros 404 quando testa localmente

Sintoma: todos os pontos finais devolvem 404 quando usa dev_appserver.py para testar a sua API localmente, mas quando implementa a API no App Engine, os pontos finais respondem conforme esperado. Este problema foi observado em aplicações que usam a biblioteca Django-six.

Este problema é causado por um conflito de versões entre a biblioteca python-future, que está incluída na biblioteca Endpoints Frameworks for Python e na biblioteca Django-six. Neste momento, não se conhece a versão exata da biblioteca Django-six que está a causar o conflito.