2012-01-22 16 views
1

ループをエンキューして100個のタスクがあり、それらのタスクのそれぞれがタスクをエンキューする可能性がある場合、すべてのタスクが完了したかどうかをどのように確認できますか?アプリエンジンタスクのすべてが完了しているかどうかを確認するにはどうすればよいですか?

ShardedCountersを使用してこの問題について考えました。各タスクが完了すると、カウンタをインクリメントして、count == 100であるかどうかを調べることができます。もちろん、この再帰的なカウントのシナリオに入るまで、タスクは自分のタスクを生成するタスクで分断されます。私はそれがウサギの穴を下ることは良い考えではないと分かりました。なぜなら、断片化されたカウンターは原子ではないように見えるからです。

http://code.google.com/appengine/docs/python/taskqueue/rest.html#method_taskqueue_tasks_list

答えて

1

あなたがすべき:

+0

YouTubeでSlatkinのトークを見ています。それが解決策につながる場合、私はこれをそれにマークします。ありがとう! –

+0

パイプラインAPIは素晴らしいですが、私はそれが一般的な再帰のみのテール再帰では機能しないと思います。 –

+0

はい、これが答えでした。パイプラインAPIは信じられないほどです! http://stackoverflow.com/questions/8996760/writing-to-an-appengine-blob-asynchronously-and-finalizing-it-when-all-tasks-com –

0

シナリオに応じて、あなたは、任意のタスク(いくつかのパターンに合致するか、特定のIDの/ etcを持つ)はREST APIを使用してエンキューに入れられ、現在あるかどうかを確認するためにテストすることができます新しいAppEngine pipeline APIをご覧ください。高価なタスクを連鎖させ、完了した時点を通知する方法です。それを実証する素晴らしいvideo from the Google IO conferenceもあります。

+0

プッシュキューを使用していますが、ありがとうございます。 –

関連する問題