2011-02-10 19 views
1

BJでジョブを設定し、特定の "type"の2つが並行して実行されていないことを確認する方法はありますか?BJ concurencyを扱う簡単な方法はありますか?

私たちは24個のユニコーンを運営しており、それぞれのユニコーンを起動することができます。これは、バックグラウンド・タスクをノックアウトする複数のジョブ・ハンドラーが好きなことではありません。例外はデータのインポートです。我々は一度にそれらのうちの1つ以上を動かさないように伝えることができるようにしたい。

これはBJでも可能ですか?それともresqueのようなものに移行する必要がありますか?

答えて

1

これを実行する1つの方法は、データインポートジョブを一定の優先度レベルに制限し、遅延ジョブが1つだけ優先度のジョブを選択していることを確認することです。たとえば、他のすべてのジョブを優先度0から99まで実行させ、データインポートジョブを優先度100で実行させたい場合、遅延ジョブワーカーをmin_priority 0からmax_priority 99まで実行させることができますmin_priority 100からmax_priority 100まで実行している遅れている求人を1人だけ持つことができます。これにより、2つのインポートデータジョブ(優先順位100)が同時に実行されていないことが保証されます。

+0

私たちは遅延ジョブではないバックグラウンドジョブhttps://github.com/jkraemer/bjを実際に使用しています。これは質問の一部です。遅れたジョブに切り替えたり、resqueを – Ben

+0

にすれば間違いありません。私はあなたが完全にResqueに移動する必要はないと思う。 DelayedJobに移動するだけで多くのメリットが得られます。 – davemyron

+1

異なる優先度でBJを起動することはできないようですので、delayed_jobに切り替えることをお勧めします。それは最新の状態に保たれている非常に使用されている宝石ですので、サポートも良いです。 –

関連する問題