我有一个rails应用程序,它使用sidekiq
和sidekiq-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次。
如何防止这种情况发生?我需要以某种方式清除任务吗?