1

我有一个使用 Queue_Classic gem 的 Rails 3.2 应用程序,并部署在 Heroku 上。

目前我的排队作业没有得到处理,除非我heroku run rake qc:work在命令行中运行。

我添加了一个包含以下内容的 Procfile:

worker:  bundle exec rake qc:work

heroku run rake qc:work但除非我手动运行,否则仍然没有处理队列。

我错过了什么?

这个应用程序使用了独角兽,这会产生影响吗?

4

3 回答 3

1

通常,您的工作人员独立于您的 Web 进程运行。要运行一个工作者,您需要将您的进程形式设置为运行 1 个工作者:

$ heroku scale worker=1
于 2012-09-19T17:06:27.630 回答
0

*确保在您的主 Rakefile 中包含 queue_classic 和 queue_classic/tasks。*

于 2012-06-29T11:35:05.097 回答
0

经过一番挖掘,我想出了以下解决方案。

我不确定这是否是最好的方法,或者当我们扩展 Web 进程等时它会如何表现,但它现在正在工作。

我像往常一样设置独角兽,包括

#Procfile
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb 

然后我添加了以下配置

#unicorn.rb
worker_processes 3 
timeout 30

@qc_pid = nil

before_fork do |server, worker|
  @qc_pid ||= spawn( "bundle exec rake qc:work" )
end
于 2012-07-03T10:05:03.260 回答