2012-03-05 14 views
1

特定の時間内に処理されない場合、ジョブをタイムアウトさせる機能を実装する必要があります。resqueジョブのタイムアウトを設定する方法

ジョブが作成されたが、キューが長すぎたり、作業に時間がかかりすぎたりして1時間以内に処理できないとします。

私はそのような場合に削除されるべき仕事を望んでいません...それを行うための最善の方法は何ですか?おそらく、私が監督している設定パラメータやサードパーティの宝石がありますか?

おかげ

+0

https://rubygems.org/gems/resque-timeoutは、ジョブをタイムアウトさせるはずの宝石です。それが削除されたかどうかわからない場合は、 – ScottJShea

+0

が既にチェックされています。私が探していたものではありません:( – Matthias

答えて

1

デフォルトでResqueでこれを行う方法があるかどうかはわからないが、自分で行うのは難しいことではないでしょう。 、

def perform(id, queued_at) 
    return false unless Time.parse(queued_at) >= 1.hour.ago 

    ... 
end 

とジョブをキューに入れるために実行します:あなたの仕事で

はこのような何かをResque.enqueue(MyJobClass、object.id、DateTime.now)。 1行目はジョブを自動的にダンプし、1時間以上前にキューに入れられた場合に実行されないようにします。

+0

ありがとうございます。私たちは仕事をしています。私はそれがresqueからqueued_atフィールドに直接アクセスする簡単な方法であるかどうか疑問に思っています!? – Matthias

+0

私はかなり確信していますResque doesn ' – Veraticus

+0

ok、ありがとうございました – Matthias

関連する問題