Resque ワーカーを使用してキュー内のジョブを処理しています。キュー内に 1M を超える多数のジョブがあり、削除する必要のあるジョブがいくつかあります (エラーによって追加されました)。ジョブでキューを作成するのは簡単な作業ではありませんでした。そのため、resque-web を使用してキューをクリアし、正しいジョブを再度追加するという選択肢はありません。
アドバイスをいただければ幸いです。ありがとう!
Resque ワーカーを使用してキュー内のジョブを処理しています。キュー内に 1M を超える多数のジョブがあり、削除する必要のあるジョブがいくつかあります (エラーによって追加されました)。ジョブでキューを作成するのは簡単な作業ではありませんでした。そのため、resque-web を使用してキューをクリアし、正しいジョブを再度追加するという選択肢はありません。
アドバイスをいただければ幸いです。ありがとう!
特定のジョブをキューから削除するには、destroy メソッドを使用できます。使い方はとても簡単です。たとえば、キュー 1 という名前のキューにあるクラス Post と ID x のジョブを削除する場合は、次のように実行できます。
Resque::Job.destroy(queue1, Post, 'x')
特定のタイプのすべてのジョブをキューから削除する場合は、使用できます
Resque::Job.destroy(QueueName, ClassName)
ドキュメントは次の場所にあります。
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)