I guess I need a sanity check here because if I want to prevent any sidekiq jobs from ending prematurely, Heroku Redis should handle this for me?
When I want to push new changes to a production site, I put the application in maintenance mode: heroku maintenance:on
. Now when I do this and run heroku ps
I can see both my web
process and my worker
(i.e. sidekiq) are up still (makes sense because its just to prevent users having access to the site).
If I shut down the worker
dyno with a command like this: heroku ps:stop worker
after the site is in maintenance mode, will this safely stop sidekiq workers before it does down? Also, from Sidekiq's documentation:
https://github.com/mperham/sidekiq/wiki/Deployment#heroku
It mentions a -t N
switch where N is a number in seconds but that Heroku has a hard limit of allowing a process 30 seconds to shut down on its own. Am I correct that if I stop the worker
process with the heroku command, it will give any currently running jobs N
seconds to finish before giving it a SIGTERM
signal?
If not, what additional steps do I need to take to make sure Sidekiq has safely shut down?