Добрый день!
Переодически запускается rake задача и запускает фоновые задачи sidekiq с разными параметрами.
Feed.find_each do |feed| #может быть 1000 элементов
FeedUpdate.perform_async(feed.id)
end
Нужно как то получить оповещение, что эти фоновые задачи были выполнены (не важно успешно или нет).
Есть sidekiq batches, то что мне нужно, но он платный((
batch = Sidekiq::Batch.new
batch.description = "Batch description (this is optional)"
batch.on(:success, MyCallback)
batch.jobs do
rows.each { |row| RowWorker.perform_async(row) }
end
накидал свой вариант
worker_ids = []
Feed.find_each do |feed|
worker_ids.push(FeedUpdate.perform_async(feed.id))
end
loop do
sleep(0.5)
in_progress = false
worker_ids.each do |id|
status = Sidekiq::Status::status(id)
if (status == :queued) || (status == :working)
in_progress = true
end
end
break if in_progress == false
end
Callback.run
Мой вариант, работает.
Есть ли еще варианты или похожие гемы?