Python GAE SDK を使用しています。
の 6000 以上のインスタンスに対して実行する必要がある処理がありますMyKind
。1 回のリクエストで処理するには遅すぎるため、タスク キューを使用しています。1 つのタスクで 1 つのエンティティのみを処理する場合、数秒しかかかりません。
ドキュメントによると、「バッチ」で追加できるタスクは 100 個までです。(それはどういう意味ですか? 1 つの要求で? 1 つのタスクで?)
そこで、「バッチ」が「リクエスト」を意味すると仮定して、データストア内のエンティティごとにタスクを作成する最善の方法を見つけようとしています。どう思いますか?
MyKind
の順序が決して変わらないと仮定できれば簡単です。(処理によって実際にMyKind
インスタンスが変更されることはありません。他のタイプの新しいインスタンスが作成されるだけです。) 100 未満の間隔で、開始する場所のオフセットをそれぞれに与えて、一連のタスクを作成できます。次に、各タスクは、実際の処理を行う個別のタスクを作成できます。
しかし、非常に多くのエンティティがあり、元の要求で必要なすべてのスケジューリング タスクを追加できない場合はどうなるでしょうか? これにより、再帰的な解決策が必要だと思います。各タスクは、与えられた範囲を調べます。範囲内に要素が 1 つしかない場合は、その要素に対して処理を行います。それ以外の場合は、範囲を後続のタスクにさらに分割します。
エンティティを識別するためにオフセットと制限を使用することを期待できない場合 (順序が一定であることが保証されていないため)、それらのキーを使用することはできますか? しかし、その後、何千ものキーを送信する可能性があり、扱いにくいようです.
ここで正しい道をたどっていますか、それとも検討すべき別の設計がありますか?