0

我在App Engine生產環境中遇到了一個奇怪的情況。ndb查詢返回舊屬性值

有一個實體已正確更新。我能夠在數據存儲查看器中看到更新的值。還有一個請求,它在查詢中檢索到相同的實體。實體出現在結果中,但它具有舊的財產價值。我能夠通過清除內存緩存來解決問題。 查詢直接在數據存儲上執行,而不是從memcache返回。光標被初始化爲無

announcements, cursor, more = query.fetch_page(
    msg.valid_data.get('limit') or 40, start_cursor=cursor) 

是否有任何情況下直接查詢可以返回來自memcache的結果? 沒有什麼關於它的ndb caching documentation

它可能與遊標有關嗎?

回答

4

不,這與memcache或遊標無關,但具有最終的一致性。非祖先查詢顯式不保證返回更新的數據。

請參閱關於structuring data for strong consistency的文檔。

+0

我認爲最終的一致性只會影響哪些實體出現在結果中,而不是它們的內容 – 2014-09-24 10:38:53

+0

不,完全沒有。如果您對現有實體進行更改,然後執行查詢,則很可能會取回該實體的舊版本。 – 2014-09-24 10:59:01

+0

謝謝。我現在知道了 – 2014-09-24 11:07:04