0

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

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 安装完毕,迁移运行,worker 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 的调度程序调度的 rake 任务,这里唯一需要发生的事情是引入将delay其放入 Worker 队列的方法吗?

提前感谢您的帮助。

4

1 回答 1

0

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

只需确保您的 Procfile 中有以下内容:

worker:  bundle exec rake jobs:work

更多信息可以在这里找到:https ://devcenter.heroku.com/articles/delayed-job

于 2012-12-12T22:18:20.523 回答