使用Worker Dyno在Heroku上调度延迟作业

时间:2012-12-12 17:02:36

标签: ruby-on-rails-3 heroku delayed-job

我目前正在使用Heroku的调度程序来运行脚本。但是,脚本运行的时间将从几毫秒增加到几分钟。我正在使用delayed_job gem将这个过程推送到Worker Dyno。我想继续每天运行一次这个脚本,只需将其卸载给工作人员。我目前的佣金任务是:

desc "This task updates some stuff for you."
task :update_some_stuff => :environment do
  puts "Updating some stuff ..."
  SomeClass.new.process
  puts "... done."
end

安装gem后,迁移运行,并且工作人员dyno启动,脚本只需要更改为:

 desc "This task updates some stuff for you."
    task :update_some_stuff => :environment do
      puts "Updating some stuff ..."
      SomeClass.new.delay.process
      puts "... done."
    end

由于这个任务仍然是Heroku的Scheduler安排的rake任务,所以在这里需要引入delay方法才能将它放入Worker的队列中吗?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

是的,DJ是一个非常简单的gem,你应该能够通过向数据库中的delayed_jobs表添加记录来在本地正常工作。一个工人在Heroku上运行一切都应该没问题。

请确保您的Procfile中包含以下内容:

worker:  bundle exec rake jobs:work

可在此处找到更多信息:https://devcenter.heroku.com/articles/delayed-job