我目前在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,那么它将大大简化一切。
这可能吗?
答案 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