Почему Руфус назначает первую работу дважды?
У меня есть приложение Rails, которое использует Rufus Scheduler в сочетании с отложенными заданиями для выполнения фоновых заданий. Есть и другие задания, но та, с которой у меня проблемы, запланирована в контроллере с использованием этого кода:
def create
@harvest_plan = HarvestPlan.new(resource_params)
@harvest_plan.start_date = Time.parse(resource_params[:start_date])
if @harvest_plan.save
ApplicationController.new.insert_in_messages_list(session, :success, 'Harvest plan created')
schedule_harvest
redirect_to farms_path
end
end
private
def schedule_harvest
Rufus::Scheduler.singleton.every "#{@harvest_plan.hours_between}h",
:times => @harvest_plan.repetitions, :first_at => @harvest_plan.start_date do
CreateHarvestFromPlanJob.perform_later
end
end
Задание должно планироваться в соответствии с моделью плана сбора урожая, которая указывает, сколько часов должно пройти между заданиями, когда должно быть запланировано первое задание и сколько повторений должно произойти. Все работает отлично, за исключением первого задания, которое происходит во время, указанное в first_at, но по какой-то причине оно запланировано дважды, отложенные задания затем выполняют задание дважды. Я пытался использовать параметры мьютекса, блокировки и перекрытия, но ничего не изменилось. После первой работы (запланированной дважды) все работает нормально. Следующие работы запланированы вовремя и только один раз. У меня только один работник с задержкой
Почему это происходит?
Я использую Rails 4.2.4, Ruby 2.2.2 и Rufus 3.3.2. Поскольку ошибка происходит как с пассажиром, так и с вебриком, я предполагаю, что это не имеет никакого отношения к проблеме.
1 ответ
Почему Руфус назначает первую работу дважды?
из-за найденной ошибки: https://github.com/jmettraux/rufus-scheduler/issues/231
Большое спасибо!