我目前正在使用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的队列中吗?
提前感谢您的帮助。
答案 0 :(得分:0)
是的,DJ是一个非常简单的gem,你应该能够通过向数据库中的delayed_jobs
表添加记录来在本地正常工作。一个工人在Heroku上运行一切都应该没问题。
请确保您的Procfile中包含以下内容:
worker: bundle exec rake jobs:work
可在此处找到更多信息:https://devcenter.heroku.com/articles/delayed-job