我使用NDB作爲我的應用程序,並使用iter()與限制和開始遊標來遍歷任務中的20,000個查詢結果。很多時候我遇到了超時錯誤。哪個NDB查詢函數更有效地遍歷一大組查詢結果?
超時:數據存儲操作超時或數據暫時不可用。
我打這個電話是這樣的方式:
results = query.iter(limit=20000, start_cursor=cursor, produce_cursors=True)
for item in results:
process(item)
save_cursor_for_next_time(results.cursor_after().urlsafe())
我可以減少限制,但我想只要10分鐘一個任務可以運行。 10分鐘應該超過20000次結果。事實上,一個好的運行,任務可以在大約一分鐘內完成。
如果我切換到fetch()或fetch_page(),他們會更有效率,不太可能遇到超時錯誤?我懷疑iter()中有很多開銷會導致超時錯誤。
謝謝。
我不太明白爲什麼需要在映射器中禁用上下文緩存?這真的有什麼幫助? – Sam
這已經有一段時間了,但如果我沒有記錯的話,我做了它,因此它在創建實體時不會創建上下文緩存,並且可能會在運行的實例上創建不必要的開銷。 – Faisal