I have depoloyed to heroku a project where Im using node-schedule, wehre a job is supose to run every 20 min. Ive been reading about heroku dynos and advance schedule and I find it still confusing, so if someone could answer my questions, it would be very much appreciated!!
"free version of Heroku the server sleeps after 30 mins of inactivity"
- I am using heroku eco, is it the same then as with the free version?
- It says every 30 min. The job is scheduled with my code every 20 min. Shouldnt it then still run as there qouldnt be 30 min of inactivity?
- I dont fully understand dynos. Could someone please explain them- do I need them in case of a cron job/node-schedule?
- I have "750 free dynos". How does that work? Every time the scheduled task is executed a free dyno is used?!
Without fully understand what I exactly need, I have followed a tutorial for scheduled tasks deployed to heroku :
const schedule = require('node-schedule');
schedule.scheduleJob('*/15 * * * *', ()=>{
// Execute something every 15 minutes
});
created Procfile with
clock: node schedule.js
Then I created a folder named lib/tasks/ and added a schedule.rake file with the following:
desc "Pings PING_URL to keep a dyno alive"
task :dyno_ping do
require "net/http"
if ENV['PING_URL']
uri = URI(ENV['PING_URL'])
Net::HTTP.get_response(uri)
end
end
then I deployed and then
$ heroku config:add PING_URL=http://Procfile.herokuapp.com
$ heroku addons:add scheduler:standard
$ heroku addons:open scheduler
then I choose to run it every 10 min with the following command added to heroku:
rake dyno_ping
Now I am also wondering how/how many dynos will I loose every 10 min? And how it works. That the task is run every 10 min, means the app deployed to heroku will be prevented from 'sleeping' and thus executing the job as I specified (which is every 20 min)?