2013-03-11 2 views
8

Я использую Google Cloud sql с appengine.Запрос на вызов API datastore_v3.Put() был слишком большим

Я получаю com.google.apphosting.api.ApiProxy$RequestTooLargeException: The request to API call datastore_v3.Put() was too large., несмотря на то, что я не использую API Datasotre.

Я думаю, согласно документам https://developers.google.com/appengine/docs/java/cloud-sql/developers-guide#access_limits, что ограничение размера данных составляет 16 МБ, которое подается за 60 секунд.

Размер моих данных составляет около 1 МБ, и мой ответ определенно меньше 1 минуты. Если я попытаюсь с меньшими данными, все будет работать правильно.

Итак, почему исключение исключено? в чем проблема ? Является ли это ошибкой в ​​движке Google? или существует ограничение по размеру, где оно документировано? или что ?

+1

Datastore имеет ограничение 1Mb на сущность. Вы уверены, что используете Cloud SQL? Также обратите внимание, что сеансы используют Datastore под капотом, поэтому, если вы сохраняете более 1 Мб в сеансе, вы можете получить это исключение. –

+0

@PeterKnego Я использую Cloud SQL наверняка. По сеансам, вы имеете в виду HttpSession? – Robert

+1

Да, в частности, поддержка сеанса GAE: https://developers.google.com/appengine/docs/java/config/appconfig#Enabling_Sessions –

ответ

9

Это происходит из-за GAE sessions, который под капотом использует хранилище данных GAE для сохранения объектов сеанса. Это исключение выдается, если в сеансе хранится более 1 Мб данных.

+0

Как вы решили проблему? Вы как-то удалили данные из сеанса? – qgicup

+0

Прошло два года, я не помню, как именно я решил это. Возможно, я удалил данные из сеанса; перезагружать его из базы данных каждый раз. Или я разделил данные на два объекта; каждый объект меньше 1 МБ и сохраняет их в сеансе с двумя разными ключами. – Robert

Смежные вопросы