2012-01-27 3 views
3

は、Google App Engineタスク(およびそれらが生成する子タスク)のセットがの場合、すべてが完了したかどうかを判断する方法はありますか?アプリエンジンのタスクキュータスクの完了時を知る方法はありますか?

実行するタスクが100個あり、10個の子タスクがそれぞれ10個発生するとします。それは200のタスクです。それらの子タスクがより多くのタスクを再帰的に生成するかもしれないとしましょう...

すべてのタスクがいつ完了したかを判断する方法はありますか?私はアプリエンジンのパイプラインAPIを使ってみましたが、素晴らしいAPIであっても、私の特定のユースケースでうまくいくようには見えません。

私は、BLOBに同時に書き込みをしながら、レート制限されたURLフェッチコールをたくさん作成したいと考えています。すべてのURLフェッチコールの終わりに、BLOBをファイナライズする必要があります。

パイプラインAPIを使用して解決策を見つけましたが、パイプラインを実行する必要がある頻度で私にはコスト効率が良くないとデータストアに多くの書き込みを行います。

+0

あなたは既にFantasmを見ましたか? http://code.google.com/appengine/articles/fantasm.html#inで記事の興味深い部分を説明し、事前に生成されたタスクの量を予測できますか? – proppy

+0

こんにちは、Proppy、ありがとう。私の例はファンアウトの1つであり、あなたが言及したファンタスの記事ではファンインを使ってカウント動作を最適化する方法について話しています。それは便利かもしれませんが、私は特定のユースケースのために事前にタスクの数を知らないので、何らかの再帰的カウントをしなければならないと思っています。私は誰かがそれから私を奪うことができる何かを持っていることを望んでいます。 –

+0

パイプラインAPIが費用対効果に優れていないと判断しましたか?データストアの書き込みは、インデックス作成が不要な場合は特に個別にかなり安いです。 –

答えて

1

永続的な記憶媒体に何らかの形で書き込む方法はなく、データストアは唯一のゲームです。バックエンドを使用して補完を追跡する独自のサーバーを作成することもできますが、単純なタスクでは非常にオーバーヘッドになります。パイプラインAPIを使用することが最善の策です。

+0

私はデータストアに書いても問題ありません。私はAPIが90〜120のジョブのために5Kの大きなエンティティをデータストアに書き込むつもりならば、パイプラインAPIを使ってそれを行うことはできません。自分のコードが最適化されているかどうかはわかりません。パイプラインAPIを正しく使用しているかどうかはわかりません。私はコードのプロジェクト管理者の助けを借りてきましたが、すべてのユースケースでこのように動作するとは言えませんが、これは私が私の経験していることです。 90-120のURLフェッチとそれに伴うすべてのデータストアアカウンティングのための$ 0.10(5K +大きなエンティティが書かれています) –

+0

@JohnWheeler私はそれに本当に驚いています。エンティティの性質は何ですか?なぜなら、多くのエンティティのようなものが必要な理由や、なぜ彼らが「大規模」なのかを考えることはできません。 –

+0

これは私のパイプラインを4回実行した結果です。各パイプライン呼び出しは約90-120回のジョブを終了します。 http://i.imgur.com/jigBP.png - 特定のものを見ることに興味があれば教えてください。 –

関連する問題