Dav*_*ave 6 ruby-on-rails heroku delayed-job
我的环境是rails 3.1,heroku bamboo stack,delayed_job_active_record,(https://github.com/collectiveidea/delayed_job)并尝试使用hirefire.(https://github.com/meskyanichi/hirefire) - 我可以看到delayed_job队列文档,但是如何在heroku上应用它?
我有一组最高优先级的任务,每小时就会产生一次,我需要投入3名工作人员,大约需要26分钟才能完成.在此期间,不太重要的背景任务需要继续,可能有1名工作人员致力于他们.
因此,我将优先级任务块设置为命名队列,例如'hourtask',然后为其他所有内容命名一个队列'everythingelse':)
问题是,我如何将heroku工作者专门用于特定队列?是否与文档中的环境变量有关?它说:
# Set the --queue or --queues option to work from a particular queue.
$ RAILS_ENV=production script/delayed_job --queue=tracking start
$ RAILS_ENV=production script/delayed_job --queues=mailers,tasks start
Run Code Online (Sandbox Code Playgroud)
但是我对heroku设置不太熟悉,想知道如何将它应用到我的heroku生产环境中?
Nei*_*ton 14
它在README for Delayed Job 3中:
DJ 3引入了Resque风格的命名队列,同时仍然保留了DJ风格的优先级.目标是提供一个系统,用于对由不同工作池进行工作的任务进行分组,这些工作池可以单独进行缩放和控制.
可以通过设置队列选项将作业分配到队列:
object.delay(:queue => 'tracking').method
Delayed::Job.enqueue job, :queue => 'tracking'
handle_asynchronously :tweet_later, :queue => 'tweets'
Run Code Online (Sandbox Code Playgroud)
script/delayed_job可用于管理将开始处理作业的后台进程.
为此,请将gem"守护进程"添加到Gemfile中,并确保已运行rails generate delayed_job
.
然后,您可以执行以下操作:
$ RAILS_ENV=production script/delayed_job start
$ RAILS_ENV=production script/delayed_job stop
# Runs two workers in separate processes.
$ RAILS_ENV=production script/delayed_job -n 2 start
$ RAILS_ENV=production script/delayed_job stop
# Set the --queue or --queues option to work from a particular queue.
$ RAILS_ENV=production script/delayed_job --queue=tracking start
$ RAILS_ENV=production script/delayed_job --queues=mailers,tasks start
Run Code Online (Sandbox Code Playgroud)
通过设置QUEUE或QUEUES环境变量来处理队列.
QUEUE=tracking rake jobs:work
QUEUES=mailers,tasks rake jobs:work
Run Code Online (Sandbox Code Playgroud)
在Heroku上,在proc文件中,创建两个条目:
worker1: QUEUE=tracking rake jobs:work
worker2: QUEUES=mailers,tasks rake jobs:work
Run Code Online (Sandbox Code Playgroud)
并逐个扩展:
heroku ps:scale worker1=2 worker2=1
Run Code Online (Sandbox Code Playgroud)
等等
归档时间: |
|
查看次数: |
4172 次 |
最近记录: |