GAE的文檔ndp.put_multi
嚴重缺乏。 NDB Entities and Keys - Python — Google Cloud Platform顯示它返回一個鍵列表(list_of_keys = ndb.put_multi(list_of_entities)
),但它沒有提到失敗。 NDB Functions不提供更多信息。如何處理來自ndb.put_multi的錯誤
通過代碼(下)洞穴探險,我表明,至少在目前,put_multi
只是集合了Future.get_result()
■從異步方法,它本身代表的實體put
代碼返回。現在,docs for the NDB Future Class表示將返回結果,否則將引發異常。然而,我被告知,如果一個特定的put
失敗,結果將是None
(我找不到任何權威的文檔來說明這個效果,但是如果它是類似於db.get
那麼這將是有意義的)。
所以這一切歸結爲一些問題我無法找到答案:
- 顯然,返回值是一個列表 - 它是一些元素的列表可能沒有?或者是使用例外嗎?
- 當出現錯誤時,應該重新放置什麼?所有實體是可以重新投入(冪等)還是隻有那些返回值爲
None
(如果這甚至是如何傳遞錯誤)? - 錯誤常見(一個答案:1/3000)?他們是否出現在日誌中(因爲我沒有見過)?有沒有辦法可靠地模擬測試錯誤?
Usage of the function in an open source library意味着該操作是冪等的,但就是這樣。 (Other usages don't even bother checking the return value or catching exceptions。)
Handling Datastore Errors除了例外情況外沒有提到任何內容。