Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Heroku workers for node.js

I am starting with Heroku and I have a webapp that has a part that needs to run once every week (Mondays preferably). I had been reading something about workers: here and here and here... But I still have many doubts:

1) This workers, runs on background without a strict control, can´t be scheduled to run once a week. or am I wrong? If I am wrong how can I schedule it?

2) To make them work, what exactly do I need to do? Type

 web:     node webApp.js
 worker:  node worker.js

in the Procfile (where worker.js is the part of the program that needs to run only once a week). And that is all?? nothing else?? so easy??

3) And the last one... but the most important. The "squamous matter of money"... One dyno is the same as one worker, so if you have a dyno running for the web you need to buy another for the worker... no? And on the list of prices a extra dyno cost 34.5$ (27.87€). It isn´t cheap... so I want to know if I am right, is it necessary buy a dyno if you want to run a worker?

like image 311
Eloy Fernández Franco Avatar asked Dec 09 '14 23:12

Eloy Fernández Franco


People also ask

Does Heroku support node JS?

Heroku Node. js support will only be applied when the application has a package. json file in the root directory.

What is workers in Heroku?

Heroku allows you to specify an application-specific process model, which can include background workers retrieving and processing jobs from the work queue.

What is worker in node JS?

In Node. js, worker threads come handy when doing large JavaScript tasks. Worker makes it simple to run Javascript code in parallel using threads, making it considerably faster and more efficient. We can complete difficult jobs without disrupting the main thread.

How do I create a dyno worker in Heroku?

You need to have a worker in your Procfile and then worker dyno settings will appear in UI. to your Procfile and after that you will be able to scale workers.


1 Answers

You might find that the Heroku Scheduler add-on (https://devcenter.heroku.com/articles/scheduler) is a 'good enough' low cost option. You are charged for the hours that your scheduled tasks run for so if you have a regular job that only takes a short time to run it would work out much cheaper than a continuous worker process.

Its not as flexible with regard to scheduling as other options. It can be set up to run a task at a specific time every day or hourly. So if you need to have your task run say only on Mondays then you would need to have the scheduler run daily then check the day within your worker.js and exit immediately on other days.

like image 198
Steve Avatar answered Oct 07 '22 16:10

Steve