perform_async Sidekiq问题

时间:2018-10-10 06:59:55

标签: ruby-on-rails ruby redis sidekiq sidekiq-monitor

假设我们在Sidekiq中发送了100个对象来处理一些数据。 编写了一个rake,该rake每24小时运行一次,并拾取所有对象(其中对象sidekiq_processed列为false的对象),并将其发送到Sidekiq队列中进行处理。在Sidekiq处理完数据后,对象的sidekiq_processed列将更新为true,以便下次计划耙时,该对象不会被拾取。

我面临的问题是一些对象在说20天后仍然将sidekiq_processed设置为false。我还实现了在perform函数内部记录日志,以记录对象所在的每个事件/状态。

比方说还有20个未得到处理的对象。检查了他们的日志,未找到这些对象的日志。在第21天触发了new.perform之后,所有对象都得到了最终处理。

我不想手动触发它们,有没有一种方法可以检查Sidekiq为什么不消耗我的队列对象。

task :process_some_objects => :environment do
    Object.where(sidekiq_processed: false).each do |object|
        Worker.perform_async(object.id)
    end
end

0 个答案:

没有答案