Когда пользователь нажимает кнопку в пользовательском интерфейсе Rails, он запускает воркер, который ищет запись, созданную пользователем. Например, когда пользователь создает «расписание» для запуска в заранее определенное время (иногда сразу), рабочий запускается и пытается найти это расписание, иногда с ошибкой «не удается найти запись».
class TestWorker
include Sidekiq::Worker
sidekiq_options queue: Rails.env.to_sym
def perform(schedule_id)
begin
schedule = ScheduledTest.find(schedule_id)
rescue
sleep 5 # schedule was just created so needs time to update in db
TestWorker.perform_async(schedule_id)
return
end
end
end
Это текущий обходной путь. Когда рабочий запускается слишком быстро и не может найти расписание, у меня теперь он снова вызывает сам себя, а затем он работает. Однако похоже, что должен быть способ «перезагрузить» модель, а не перезапускать весь рабочий процесс.