Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

starting multiple workers in Procfile (development environment vs Heroku)

I have a simple Procfile that reads:

web: bundle exec rails server thin -p $PORT
worker: bundle exec rake jobs:work

On Heroku, this will launch N worker tasks, where N is whatever I've scaled it to be.

On my development system,

$ foreman start

will only launch one worker task. If I want to launch three workers, I need a Procfile that looks like:

web: bundle exec rails server thin -p $PORT
worker: bundle exec rake jobs:work
worker: bundle exec rake jobs:work
worker: bundle exec rake jobs:work

This is a somewhat pedantic question, but if I want my development environment to behave like my Heroku environment, what's the best way to launch N worker tasks? Is the approved way to create (e.g.) Procfile_local and use it via foreman -f Procfile_local?

like image 282
fearless_fool Avatar asked Jul 10 '12 23:07

fearless_fool


2 Answers

Ah. Who would have guessed that there's an online man page for foreman? ;)

foreman start --concurrency="web=0,worker=6"

Does the trick nicely. No need to have a separate Procfile.

like image 83
fearless_fool Avatar answered Oct 02 '22 16:10

fearless_fool


Latest Foreman has renamed the option to --formation.

So, it's:

foreman start --formation="web=1,worker=2"

Source

like image 24
gylaz Avatar answered Oct 02 '22 16:10

gylaz