是否有一种简单的方法可以在所有 sidekiq(队列、重试、计划等)中搜索特定作业?
目前我正在这样做:
if !Sidekiq::Queue.new("feeds").find {|j| j.args[0] == feed.id && j.args[1] == true }
if !Sidekiq::RetrySet.new.find {|j| j.queue == 'feeds' && j.args[0] == feed.id && j.args[1] == true }
if !Sidekiq::ScheduledSet.new.find {|j| j.queue == 'feeds' && j.args[0] == feed.id && j.args[1] == true }
feed.sync
end
end
end
但是考虑到队列有多大,在迭代过程中工作可能会在集合之间移动并被错过。