質問

私はrails-3プロジェクトでResqueを使用して、5分ごとに実行されるようにスケジュールされているジョブを処理しています。私は最近、これらのジョブの作成をスノーボールし、スタックが1000以上のジョブにヒットした何かをしました。私は多くのジョブがキューに入れられる原因となった問題を修正しましたが、バグによって作成されたジョブがまだそこにあるため、ジョブが1000以上のジョブを持つキューに追加されるため、何かをテストすることが困難になるという問題があります。私はこれらの仕事を止めることはできないようです。Flushallコマンドを使用してredis-cliからキューを削除しようとしましたが、機能しませんでした。私は何かが欠けていますか?私はこれらの仕事を取り除く方法を見つけることができないようです。

役に立ちましたか?

解決

Railsコンソールをポップオープンすると、次のコードを実行してキューをクリアできます: ジェネラコディセタグプレ

他のヒント

上記の回答を参考にして、すべてのキューをクリアする必要がある場合は、次を使用できます。 ジェネラコディセタグプレ

Resqueにはすでにこれを行う方法があります-Resque.remove_queue(queue_name)を試してください(ドキュメントこちらを参照)。内部的にはResque.redis.del()を実行しますが、他のクリーンアップも実行します。(resqueがどのように機能するかを推測するのではなく)apiメソッドを使用することで、将来性が向上します。

クリアするための更新されたrakeタスク(最新のredisコマンドの変更による): https://gist.github.com/1228863

これが現在機能しているものです: ジェネラコディセタグプレ

Redisコンソールに入る:

redis-cli

データベースのリスト:

127.0.0.1:6379> KEYS *
 1) "resque:schedules_changed"
 2) "resque:workers"
 3) "resque:queue:your_overloaded_queue"

"resque:queue:your_overloaded_queue" -あなたが必要とするdb。

次に実行します:

DEL resque:queue:your_overloaded_queue

または、キュー内の指定されたジョブを削除する場合は、次のようにdbからいくつかの値をリストします LRANGE コマンド:

127.0.0.1:6379> LRANGE resque:queue:your_overloaded_queue 0 2
1) "{\"class\":\"AppClass\",\"args\":[]}"
2) "{\"class\":\"AppClass\",\"args\":[]}"
3) "{\"class\":\"AppClass\",\"args\":[]}"

次に、1つの値をコピー/貼り付けます LREM コマンド:

127.0.0.1:6379> LREM resque:queue:your_overloaded_queue 5 "{\"class\":\"AppClass\",\"args\":[]}"
(integer) 5

Where5-削除する要素の数。

ResqueのRedisですべてを削除するよりも、ResqueAPIを使用する方が安全で防弾です。Resqueは内部のクリーニングを行います。

すべてのキューと関連するキューに入れられたジョブを削除する場合: ジェネラコディセタグプレ

次にジョブがキューに入れられたときに、キューが再作成されます。

ドキュメント

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top