execute_async Sidekiq Issue

Допустим, у нас есть 100 объектов для отправки в Sidekiq для обработки некоторых данных. Записывается рейк, который запускается каждые 24 часа и выбирает все 100 объектов, для которых столбец sidekiq_processed обработан как false, и отправляет их в очередь Sidekiq для обработки. После того, как Sidekiq обработал данные, столбец sidekiq_processed объекта обновляется как true, чтобы в следующий раз при планировании рейка этот объект не был выбран.

Проблема, с которой я сталкиваюсь, заключается в том, что некоторые объекты после, скажем, 20 дней все еще имеют sidekiq_processed как false. Я также реализовал ведение журнала внутри функции выполнения, чтобы отмечать каждое событие / состояние, в котором находятся мои объекты.

Допустим, осталось 20 объектов, которые не были обработаны. Их журналы были проверены, и журналы этих объектов не были найдены. После запуска new.perform на 21-й день все объекты были окончательно обработаны.

Я не хочу запускать их вручную, есть ли способ проверить, почему Sidekiq не использовал мои объекты очереди.

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

0 ответов

Другие вопросы по тегам