Problemi noti

Questa pagina contiene i problemi noti di Cloud Endpoints Frameworks.

Java e Python

Questa sezione descrive i problemi noti che interessano sia le versioni Java sia quelle Python di Endpoints Frameworks.

Timeout massimo della richiesta

Per le API che utilizzano la versione 2 di Endpoints Frameworks, il timeout massimo della richiesta è 60 secondi.

Migrazione di Endpoints Frameworks

Quando esegui la migrazione dell'API alla versione 2 di Endpoints Frameworks, devi eseguire il deployment dell'API in una nuova app App Engine. Se riutilizzi la vecchia app App Engine, le richieste che iniziano con il percorso della versione 1, /_ah/spi, potrebbero essere inoltrate al backend della versione 2 di Endpoints Frameworks, che si aspetta che i percorsi inizino con /_ah/api.

Prestazioni scadenti nelle istanze con scalabilità automatica

App Engine offre tre tipi di scalabilità: di base, manuale e automatica. Endpoints Frameworks utilizza thread in background, non supportati dalle istanze con scalabilità automatica. I framework Endpoints devono comunicare con i servizi Google per controllare le quote e segnalare l'attività delle API, tra le altre cose. Per le istanze di scalabilità di base e manuale, questa comunicazione viene eseguita da un thread in background per evitare di rallentare le richieste. Tuttavia, le istanze con scalabilità automatica non supportano i thread in background. La comunicazione con i servizi Google avviene invece durante la richiesta. Endpoints Frameworks funziona ancora, ma con prestazioni potenzialmente ridotte.

A causa di questo problema, ti consigliamo di configurare un altro tipo di scalabilità. Consulta le seguenti sezioni della documentazione di App Engine:

I percorsi con barre finali non sono supportati

Quando esegui il deployment di un documento OpenAPI utilizzando gcloud endpoints services deploy, Cloud Endpoints rifiuta i documenti OpenAPI che includono percorsi con una barra finale, ad esempio:

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

Nei framework Endpoints, devi rimuovere la barra al termine nel decoratore del metodo Python o nell'annotazione del metodo Java.

Java

Questa sezione descrive i problemi noti di Endpoints Frameworks per Java.

Endpoints Frameworks Java precedenti (v1)

Endpoints Frameworks versione 1 per Java presenta un bug che genera un'eccezione quando un enum è annotato. Questo problema è causato da una dipendenza da una vecchia versione di Jackson. Per risolvere il problema, devi eseguire la migrazione alla versione 2 di Endpoints Frameworks.

Python

Questa sezione descrive i problemi noti di Endpoints Frameworks per Python.

Messaggio di errore: ImportError: cannot import name locked_file

Quando esegui pip install con un file requirements.txt, potresti visualizzare un messaggio di errore ImportError: cannot import name locked_file. Il problema si verifica quando pip installa una versione del pacchetto oauth2client incompatibile con google-endpoints-api-management. Per risolvere il problema, assicurati che le righe google-endpoints e google-endpoints-api-management appaiano per prime nel file requirements.txt, ad esempio:

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'

Aggiungi altri requisiti dopo queste righe.

L'API restituisce errori 404 durante i test locali

Sintomo: tutti gli endpoint restituiscono 404 quando utilizzi dev_appserver.py per testare la tua API localmente, ma quando esegui il deployment dell'API in App Engine, gli endpoint rispondono come previsto. Questo problema è stato osservato nelle applicazioni che utilizzano la libreria Django-six.

Questo problema è causato da un conflitto di versioni tra la libreria python-future, inclusa sia nella libreria Endpoints Frameworks per Python che nella libreria Django-six. Al momento non è nota la versione esatta della libreria Django-six che causa il conflitto.