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

rad*_*iel 5 heroku resque

鉴于独角兽通常管理多个Rails服务器进程,并且鉴于Resque作业运行器可能比Web请求消耗更少的资源,因此应该可以在单个Heroku dyno上运行多个resque工作器.

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

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

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

rad*_*iel 8

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

Procfile:

worker: bundle exec foreman start -f Procfile.workers
Run Code Online (Sandbox Code Playgroud)

Procfile.workers:

worker_1: QUEUE=* bundle exec rake resque:work
worker_2: QUEUE=* bundle exec rake resque:work
Run Code Online (Sandbox Code Playgroud)

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

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