30

Resque ワーカーを使用してキュー内のジョブを処理しています。キュー内に 1M を超える多数のジョブがあり、削除する必要のあるジョブがいくつかあります (エラーによって追加されました)。ジョブでキューを作成するのは簡単な作業ではありませんでした。そのため、resque-web を使用してキューをクリアし、正しいジョブを再度追加するという選択肢はありません。

アドバイスをいただければ幸いです。ありがとう!

4

3 に答える 3

23

特定のジョブをキューから削除するには、destroy メソッドを使用できます。使い方はとても簡単です。たとえば、キュ​​ー 1 という名前のキューにあるクラス Post と ID x のジョブを削除する場合は、次のように実行できます。

Resque::Job.destroy(queue1, Post, 'x')

特定のタイプのすべてのジョブをキューから削除する場合は、使用できます

Resque::Job.destroy(QueueName, ClassName) 

ドキュメントは次の場所にあります。

http://www.rubydoc.info/gems/resque/Resque%2FJob.destroy

于 2012-08-07T05:55:14.183 に答える
22

resque のソース (Job クラス) には、そのようなメソッドがあります。必要なものだと思います:)

# Removes a job from a queue. Expects a string queue name, a
# string class name, and, optionally, args.
#
# Returns the number of jobs destroyed.
#
# If no args are provided, it will remove all jobs of the class
# provided.
#
# That is, for these two jobs:
#
# { 'class' => 'UpdateGraph', 'args' => ['defunkt'] }
# { 'class' => 'UpdateGraph', 'args' => ['mojombo'] }
#
# The following call will remove both:
#
#   Resque::Job.destroy(queue, 'UpdateGraph')
#
# Whereas specifying args will only remove the 2nd job:
#
#   Resque::Job.destroy(queue, 'UpdateGraph', 'mojombo')
#
# This method can be potentially very slow and memory intensive,
# depending on the size of your queue, as it loads all jobs into
# a Ruby array before processing.
def self.destroy(queue, klass, *args)
于 2012-04-23T07:00:42.140 に答える