2013-03-11 25 views
8

我正在使用谷歌雲與sql appengine。對API調用datastore_v3.Put()的請求太大

儘管我沒有使用Datasotre API,但我得到了com.google.apphosting.api.ApiProxy$RequestTooLargeException: The request to API call datastore_v3.Put() was too large.

我認爲根據文檔https://developers.google.com/appengine/docs/java/cloud-sql/developers-guide#access_limits,數據大小限制在60秒內提供16MB。

我的數據大小約爲1 MB,我的迴應絕對少於1分鐘。如果我嘗試使用較小的數據,則一切正常。

那麼,爲什麼會拋出異常?問題是什麼 ? 它是谷歌應用程序引擎中的錯誤嗎?還是有一個大小限制,它在哪裏記錄?或者是什麼 ?

+1

數據存儲每個實體的限制爲1Mb。您確定您使用Cloud SQL嗎?另請注意,會話使用數據存儲,因此如果您在會話中保存的數據量超過1Mb,您可能會遇到此異常。 – 2013-03-11 14:15:47

+0

@PeterKnego我肯定使用Cloud SQL。通過會話,你的意思是HttpSession? – Robert 2013-03-12 07:09:36

+1

是的,特別是GAE會議支持:https://developers.google.com/appengine/docs/java/config/appconfig#Enabling_Sessions – 2013-03-12 08:14:28

回答

9

發生這種情況的原因是GAE sessions,它使用GAE Datastore保存會話對象。如果會話中存儲了超過1Mb的數據,則會引發此異常。

+0

你是如何解決這個問題的?不知怎的,你從會話中刪除了數據? – qgicup 2015-05-30 14:56:33

+0

已經兩年了,我不記得我是如何解決這個問題的。我可能已從會話中刪除了數據;每次都從數據庫重新加載它。或者我將數據分成兩個對象;每個對象都小於1MB,並使用兩個不同的密鑰將它們存儲在會話中。 – Robert 2015-06-02 14:05:40