Problemi noti

Questa pagina contiene i problemi noti dei framework di Cloud Endpoints.

Java e Python

In questa sezione vengono descritti i problemi noti che interessano sia le versioni Java che Python di Endpoints Frameworks.

Timeout massimo della richiesta

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

Migrazione di Endpoints Frameworks

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

Prestazioni scadenti sulle istanze con scalabilità automatica

App Engine offre tre tipi di scalabilità: di base, manuale e automatica. Endpoints Frameworks utilizza thread in background, che non sono supportati dalle istanze di scalabilità automatica. Endpoints Frameworks deve comunicare con i servizi Google per verificare, tra le altre cose, le quote e segnalare l'attività delle API. Per le istanze con scalabilità di base e manuale, un thread in background esegue questa comunicazione 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 continua a funzionare, ma con prestazioni potenzialmente ridotte.

A causa di questo problema, potresti voler configurare un altro tipo di scalabilità. Vedi le seguenti sezioni nella 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."

In Endpoints Frameworks, devi rimuovere la barra finale nel decorator del metodo Python o nell'annotazione del metodo Java.

Java

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

Framework Java Endpoints legacy (v1)

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

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 ricevere 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 vengano visualizzate 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 404 errore durante i test in locale

Sintomo: tutti gli endpoint restituiscono 404 quando utilizzi dev_appserver.py per testare l'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 versione tra la libreria python-future, inclusa sia nella libreria Endpoints Frameworks per Python sia nella libreria Django-six. Al momento la versione esatta della libreria Django-six che causa il conflitto è sconosciuta.