2013-03-11 24 views
8

Sto utilizzando google cloud sql con appengine.La richiesta di chiamata API datastore_v3.Put() era troppo grande

Sto ricevendo com.google.apphosting.api.ApiProxy$RequestTooLargeException: The request to API call datastore_v3.Put() was too large. nonostante non utilizzi l'API Datasotre.

Penso che secondo i documenti https://developers.google.com/appengine/docs/java/cloud-sql/developers-guide#access_limits il limite di dimensione dati sia 16 MB servito in 60 secondi.

La dimensione dei miei dati è di circa 1 MB e la mia risposta è decisamente inferiore a 1 minuto. Se provo con dati più piccoli, tutto funziona correttamente.

Quindi, perché viene lanciata l'eccezione? qual è il problema ? Si tratta di un bug nel motore di app di Google? o c'è una limitazione delle dimensioni, dove è documentata? o cosa ?

+1

Datastore ha un limite di 1 MB per entità. Sei sicuro di usare Cloud SQL? Si noti inoltre che le sessioni utilizzano Datastore sotto il cofano, quindi se si salva più di 1 Mb in sessione si potrebbe ottenere questa eccezione. –

+0

@PeterKnego Utilizzo Cloud SQL di sicuro. Per sessioni, intendi HttpSession? – Robert

+1

Sì, in particolare il supporto della sessione GAE: https://developers.google.com/appengine/docs/java/config/appconfig#Enabling_Sessions –

risposta

9

Questo succede a causa di GAE sessions, che sotto la cappa usa GAE Datastore per salvare oggetti di sessione. Questa eccezione viene generata se nella sessione sono memorizzati più di 1 MB di dati.

+0

Come hai risolto il problema? Hai rimosso i dati dalla sessione in qualche modo? – qgicup

+0

Sono passati due anni, non ricordo come esattamente ho risolto questo. Potrei aver rimosso i dati dalla sessione; ricaricarlo dal database ogni volta. O ho diviso i dati in due oggetti; ogni oggetto è inferiore a 1 MB e li memorizza nella sessione con due chiavi diverse. – Robert

Problemi correlati