0

現在、タスクを resque キューに送信する Rails アプリがあります。Rails アプリでは、プログレス バーは ajax ポーリングを介して "完了率" の読み取り値を示します。これはすべて完全にうまく機能します... resque がダウンしていない限り、進行状況バーは永遠にゼロのままで、タスクが実行されないという通知はありません (少なくとも、誰かがタスクを開始するまでは)。 resque ワーカー)。

私の質問は次のとおりです: resque が実際に起動していない場合、例外を Rails アプリに戻す方法はありますか?

4

1 に答える 1

1

私の知る限り、少なくとも resque にそのような機能が存在することはないとv1-x-stable思います。

しかし、Resque最終的に役立つ便利な方法はほとんどありません

  1. Resque::Worker.allall=>存在するワーカー のリストを返す

  2. Resque::Worker.working =>リストを返すcurrently running workers

ケース 1 :

あなたのキューが*(GLOBAL QUEUE)なら、私は信じています

上記の確認

Resque::Worker.all.empty? またはResque::Worker.length == 0またはResque::Worker.present?

あなたのためにトリックをするでしょう

ケース 2

(GLOBAL QUEUE)を持っていない場合は、*おそらくそれを実現するためにコードの一部をフックする必要があります(キュー名が であると仮定しましょうprogress_bar

Resque::Worker.all.map { |worker| worker worker.to_s.split(':') =~ /(\*|progress_bar)/ }.present?

ノート:

* GLOBAL QUEUEとQUEUE をチェックprogress_barしていますが、正規表現が壊れているかどうかもわかりません。あなたの側で確認できると思います

最後のヒント:

Resque ワーカーまたはジョブ Just に関するメタデータが必要な場合、いつでも Redis は素晴らしい情報源です。

この助けを願っています

于 2013-07-30T07:27:26.467 に答える