2013-12-10 27 views

答えて

4

のためのあなたの状態テーブル内のルックアップを行うことができます:あなたはMySuperworkerを実行すると

# config/initializers/superworkers.rb 
Superworker.create(:MySuperworker, :user_id) do 
    Worker1 :user_id 
    Worker2 :user_id 
end 

# Anywhere 
MySuperworker.perform_async(123) 

を、Worker1が開始されます。作業が終了すると、Worker2が起動します。これにより、従属グラフを従業員自身から分離することができます。 (免責事項:私は宝石の著者です)

5

サイドキーのみを使用してください。答えはノーだろう。 DickieBoyが示唆しているように、従属ジョブが完了したらすぐにそれを蹴ることができます。このようなもの。

# app/workers/hard_worker.rb 
class HardWorker 
    include Sidekiq::Worker 

    def perform() 
    puts 'Doing hard work' 
    LazyWorker.perform_async() 
    end 
end 

# app/workers/lazy_worker.rb 
class LazyWorker 
    include Sidekiq::Worker 

    def perform(name, count) 
    puts "Guess it's time I do something" 
    end 
end 

ここで、LazyWorkerはHardWorkerの最後でのみ実行されます。これが必ずしも必要でない場合は、追加のロジックを追加することができます。必要に応じて、LazyWorkerを直接呼び出すこともできます。これはすべてのユースケースではなくてもほとんどの場合に有効です。他の宝石を引っ張ってしまうのでなければ、サイドキックでそれは本当にあなたの唯一の選択肢です。あなたは、これはあなたがステート・マシンを考慮する必要があります動作しません何かをやっている場合は別の仕事から直接発射


は...

十分ではありません。ジョブが起動されると、それ自身のレコードが作成され、IDとともに記録され、実行、失敗、完了、待機状態になる可能性があります。従属ジョブは、状態テーブル内の1つ以上の依存関係を簡単にチェックし、すべての依存関係が満たされていることを確認することができます。

あなたは依存ジョブはあなたがSidekiq Superworkerを使用してジョブの依存関係を定義することができます依存

関連する問題