有没有人在Heroku Dyno中运行多个resque工作者?

时间:2013-08-11 19:51:49

标签: heroku resque

鉴于unicorn通常管理多个Rails服务器进程,并且假设Resque作业运行器可能比Web请求消耗更少的资源,则应该可以在单个Heroku dyno上运行多个resque worker。

到目前为止,有人这样成功吗?我的想法是,一个简单的方法就是让Procfile运行foreman,然后运行2个(或更多)实际工作者的实例(即rake resque:work

或者rake resque:workers是否完成了这项任务? Resque本身并不建议使用该方法,因为这会以并行线程而不是并行进程启动worker。

显然,这仅适用于I / O绑定作业。

2 个答案:

答案 0 :(得分:8)

可以使用工头来启动多个流程。将foreman添加到Gemfile中,然后创建两个文件:

<强> Procfile

worker: bundle exec foreman start -f Procfile.workers

<强> Procfile.workers

worker_1: QUEUE=* bundle exec rake resque:work
worker_2: QUEUE=* bundle exec rake resque:work

可以使用相同的技术与一些工作人员一起运行Web服务器。

注意:虽然许多州使用这种方法取得了成功,但我不建议在某些实验之外使用它,主要是因为在小型heroku实例上遇到RAM限制的风险;一旦你为heroku服务付费,无论如何都可以更容易地启动专用的工作机器。

答案 1 :(得分:1)

基于this article,听起来似乎有可能,但最大的问题是,如果其中一个子进程死掉,Heroku将无法重新启动它。