私は自分のアプリに NDB を使用し、 iter() を制限付きで使用し、カーソルを開始して、タスクで 20,000 件のクエリ結果を反復処理します。多くの場合、タイムアウト エラーが発生します。
タイムアウト: データストア操作がタイムアウトしたか、データが一時的に利用できませんでした。
私が電話をかける方法は次のようなものです。
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 分も実行できると思いました。20000 件の結果を処理するには、10 分で十分です。実際、うまくいけば、タスクは約 1 分で完了します。
fetch() または fetch_page() に切り替えた場合、それらはより効率的になり、タイムアウト エラーが発生する可能性が低くなりますか? タイムアウト エラーの原因となる iter() には多くのオーバーヘッドがあると思われます。
ありがとう。