9

以前のいくつかのタスクが完了するとタスクが開始するタスクをスケジュールする方法を探しています。

さまざまなソースからデータを収集してデータベースにダンプする数百の「コレクター」プロセスがあります。これらの収集が完了したら(1秒から数分)、データベース内のデータを分析して理解するための一連の「データ処理」プロセスをすぐに開始したいと思います。これらすべてが終了したら、最後のタスクを開始して、要約データの電子メールを送信したいと思います。

現在、Gearmanキューを使用しており、「コレクター」プロセスが完了すると予想されると、タイマーでデータ処理タスクを開始しますが、これは、コレクタープロセスが3分後に終了した場合でも、処理ステップが10分後に開始されることを意味します(またはさらに悪いことに、まだ終了していません)。

理想的には、「プロセスAと(BまたはC)が完了したときにプロセスXを開始する」、「指定したプロセスの95%が完了したとき、または10分が経過したときにプロセスYを開始する」などの特定のルールを指定できます。

プロセスと依存関係は、毎回異なるパラメーターで実行されるため、自動的に作成する必要があります(つまり、毎回同じ計算を行うわけではありません)。

キューやモニターを使って自分でグラフ依存のフレームワークを書くこともできますが、それはすでに解決されているはずのようで、私が説明するようなものを使ったことのある人を探しています。

4

2 に答える 2

7

「プロセス A と (B または C) が完了したらプロセス X を開始する」

ワーカー X がサブワーカー A、B、C を起動し、それらが完了するのを待ってから続行しないのはなぜですか? Gearman ワーカーとクライアントの両方であるプロセス X を同時に持つことができます。

于 2011-08-02T15:37:43.140 に答える