独角兽& Heroku - 对于每个可能的dyno是不同的配置?

时间:2012-07-13 19:08:02

标签: ruby-on-rails heroku resque sidekiq

我目前在2台Heroku dynos上运行我的应用程序。从我到目前为止看起来我需要添加类似于config / unicorn.rb的东西:

worker_processes 3
timeout 30

@resque_pid = nil

before_fork do |server, worker|
  @resque_pid ||= spawn("bundle exec rake " + \
  "resque:work QUEUES=scrape,geocode,distance,mailer")
end

我有一些不同的后台作业要处理,有些需要同时运行单线程和一些。这种配置的问题是,在两个Unicorn实例上,它将产生完全相同的resque worker(相同的队列等)。

如果我可以更改每个工作进程的队列类型,甚至可以让一个实例运行resque worker而另一个实例运行sidekiq worker,那么它将大大简化一切。

这可能吗?

1 个答案:

答案 0 :(得分:0)

也许你会混淆unicorn worker_processes和Heroku工人?

您可以使用Procfile为每个队列启动Heroku worker,并使用unicorn进程处理Web请求。

尝试此设置

/config/unicorn.rb

worker_processes 4 # amount of unicorn workers to spin up
timeout 30         # restarts workers that hang for 30 seconds

/ Procfile

web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
worker: bundle exec sidekiq
worker: bundle exec rake resque:work QUEUES=scrape,geocode,distance,mailer