我想使用ndb.get_multi(list_of_keys)
來避免進行更昂貴的查詢。如果我的理解是正確的,那麼ndb.get_multi()
只會向您返回1個讀取的實體,因此如果您有50個密鑰的列表,並且只找到20個密鑰,那麼您只應收取20次讀取費用。ndb.get_multi()返回空實體
keys = list()
keys.append(Key('User', 2)) // this user exists
keys.append(Key('User', 12)) // this user DOES NOT exist
keys.append(Key('User', 15)) // this user DOES NOT exist
users = ndb.get_multi(keys)
我回來的是3個項目,其中1個是用戶,2個是空值。當我檢查AppStats時,我發現確實收取了我放入的所有密鑰,儘管2個密鑰不存在。
爲什麼我會返回空實體?不應該找不到的項目被跳過?
看着你的另一個問題和這個問題,你正在吠叫錯誤的樹。您將不得不爲每個返回的實體付費。查詢非常有效。如果它沒有做你想做的事,你需要考慮替代方案,比如使用投影查詢或者某種緩存,比如memcache,邊緣緩存或者在其他實體中存儲非規範化數據。 – dragonx