Is there some way to configure multiple worker and/or web processes to run in the single Heroku app container? Or does this have to be broken up into multiple Heroku apps?
For example:
worker: node capture.js
worker: node process.js
worker: node purge.js
web: node api.js
web: node web.js
There are three primary process types: Web dynos: receive HTTP traffic from routers and typically run web servers. Worker dynos: execute anything else, such as background jobs, queuing systems, and timed jobs. One-off dynos: are temporary and not part of an ongoing dyno formation.
By default, applications are limited to 100 total dynos across all process types. Additionally, a single process type that uses performance dynos can't be scaled to more than 10 dynos. Submit a request to raise this limit for your application.
You can run multiple command inside Procfile using sh -c command : worker: sh -c 'firstCommand && secondCommand && etc...' Notes : Procfile should be at the project root level.
Running heroku ps:scale web=1 will scale your app to one running dyno, basically meaning you have one server running your app currently.
All processes must have unique names. Additionally, the names The only process that carries a significant name is the web
and worker
are insignificant and carry no special meaning.web
process, as stated in the Heroku docs:
The web process type is special as it’s the only process type that will receive HTTP traffic from Heroku’s routers. Other process types can be named arbitrarily. -- (https://devcenter.heroku.com/articles/procfile)
So you want a Procfile
like so:
capture: node capture.js process: node process.js purge: node purge.js api: node api.js web: node web.js
You can then scale each process separately:
$ heroku ps:scale purge=4
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With