每次Sidekiq工作程序运行时,Rake Tasks都会执行一次额外的时间

时间:2018-01-19 19:17:41

标签: ruby-on-rails ruby rake sidekiq

我有一个rails应用程序,它使用sidekiqsidekiq-cron按计划运行一些rake任务。

这是一个样本工作者

def perform
  RailsApp::Application.load_tasks

  # generate output json
  Rake::Task["json:output_data"].execute

  # run r-script
  Rake::Task["r_script:generate_questions"].execute
end

一个示例任务

task output_data: :environment do
  p "generating output data"
  unless Dir.exist?("vendor/r_script/data/output_json")
    FileUtils.mkdir_p("vendor/r_script/data/output_json")
  end
  unless Dir.exist?("vendor/r_script/data/input_json")
    FileUtils.mkdir_p("vendor/r_script/data/input_json")
  end
  Rake::Task["json:generate_master_json"].execute
  Rake::Task["json:generate_raters"].execute
  Rake::Task["json:generate_ratees"].execute
end

我第一次使用sidekiq web界面中的cron选项卡对worker进行排队,它运行正常。 "生成输出数据"按预期打印一次。每次我再次运行它,"生成输出数据"打印额外的时间。每隔n次排队sidekiq作业,它会打印n次。

如何防止这种情况发生?我需要以某种方式清除任务吗?

0 个答案:

没有答案