execute_async Sidekiq Issue - PullRequest
       33

execute_async Sidekiq Issue

0 голосов
/ 10 октября 2018

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

Проблема, с которой я сталкиваюсь, состоит в том, что некоторые объекты, скажем, еще 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
...