鉴于独角兽通常管理多个Rails服务器进程,并且鉴于Resque作业运行器可能比Web请求消耗更少的资源,因此应该可以在单个Heroku dyno上运行多个resque工作器.
到目前为止,有人这样成功吗?我的想法是,一个简单的方法是让Procfile运行foreman,然后运行2个(或更多)实际工作者的实例(即rake resque:work)
或者是rake resque:workers完成那项任务?Resque本身并不建议使用该方法,因为这会以并行线程而不是并行进程启动worker.
显然,这仅适用于I/O绑定作业.
可以使用工头来启动多个流程.将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服务,无论如何都可以更容易地启动专用的工作机器.
| 归档时间: |
|
| 查看次数: |
1434 次 |
| 最近记录: |