Предположим, я нажимаю несколько заданий на очередь sidekiq для немедленного и асинхронного выполнения. У меня есть сообщения, которые говорят мне, когда общий процесс запущен журнал и завершилОтслеживание времени выполнения различных асинхронных фоновых заданий в Sidekiq
start = Time.zone.now
puts "Starting jobs"
1000.times.each do
SomeWorker.perform_async(some_arg_id)
end
end_time = Time.zone.now
runtime = end_time - start
puts "Finished jobs - that took #{runtime} seconds"
Это, конечно, имеет один очень большой недостаток - он выводит, что завершенные работы, когда все выталкивается в очереди, не тогда, когда рабочие места есть фактически завершено.
Я ищу способ отслеживать завершение партии заданий. Мне не хотелось бы проводить опрос каждые X секунд, чтобы убедиться, что очередь пуста. Также кажется взломанным, чтобы последнее задание в очереди обновляло БД или журнал с завершенным временем, потому что они не гарантированы для завершения в любом порядке.
Есть ли наилучшая практика для этого?
Спасибо!
Правильно, и ответ на вызов (: success) может выводить общее время. –