为什么Rufus安排第一次工作两次?

时间:2017-01-20 01:53:54

标签: ruby-on-rails delayed-job rufus-scheduler

我有一个Rails应用程序,它使用Rufus Scheduler结合Delayed作业来执行后台作业。还有另外一项工作,但我遇到问题的工作是使用此代码在控制器中安排的:

  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。由于乘客和webrick都发生了错误,我认为这与问题无关。

1 个答案:

答案 0 :(得分:3)

  

为什么Rufus安排第一份工作两次?

因为您找到了错误:https://github.com/jmettraux/rufus-scheduler/issues/231

非常感谢!