1

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

我面临的问题是一些对象在说 20 天后仍然有 sidekiq_processed 为假。我还在 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
4

0 回答 0