0

我目前正在 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(相同的队列等)。

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

这可能吗?

4

1 回答 1

0

也许您混淆了 unicorn worker_processes 和 Heroku worker?

您可以使用您的 Procfile 为每个队列启动 Heroku 工作程序,并使用一个独角兽进程来处理 Web 请求。

试试这个设置

/config/unicorn.rb

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

/过程文件

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
于 2012-08-04T21:39:36.777 回答