2016-10-11 10 views
0

私はバックグラウンドジョブを持っており、最大5分かかることがあります。私はちょうど私のResqueのキューをチェックして、私は仕事の日前に仕事を始めているにもかかわらず、 "75人の労働者"がいることがわかります。Rails、Heroku、Resque:労働者が無限の「働く」状態で立ち往生しました

これはどういう意味ですか?仕事は完了しましたか?どうしてこんなに詰まっていて、どうやってこのような状況に対処できますか?

は、ここに私の仕事です:

class CalculateRelevantEventRankingsForUser 

    @queue = :calculate_relevant_event_rankings_for_user 

    def self.perform(user_id, newly_voted_event_id) 
    begin 
     user = User.find(user_id) 
     events_to_rerank = user.events_that_share_keywords(newly_voted_event_id) 
     events_to_rerank.each do |e| 
     e.rank(user_id) 
     end 
    rescue Resque::TermException 
     Resque.enqueue(self, user_id, newly_voted_event_id) 
    end 
    end 

end 

そしてprocfile:

resque: env TERM_CHILD=1 bundle exec rake resque:workers QUEUE='*' COUNT='1' 

enter image description here

+0

5分ジョブのキューまたは情報の設定方法などの情報はありますか? – user3456978

+0

OP –

答えて

2

は、任意の数の理由だろう。 Redisプロバイダがインスタンスをクラッシュさせて孤立させた可能性があります。赤ちゃんの記憶がなくなってしまった可能性があります。私はあなたが一度に大量のジョブをキューに入れるように設計されたアプリケーションを持っていたことを知っています。

これらのジョブIDが理由で孤立しているため、UIが停止する可能性があります。

redis-cli monitorを実行して、出力をチェックアウトしてみてください。

あなただけ立ち往生ジョブをクリアしたい場合:Resque.workers.each {|w| w.unregister_worker}

がsidekiqのための私の前述の好みを改めて表明。あなたの以前のQのいくつかに基づいて、これはもはや問題ではないかもしれません。私は潜在的にいくつかの設計変更を行っていることを知っていますG1。

+1

にいくつかの詳細を追加しました。私はSidekiqに切り替えることになった –

関連する問題