thisismydesign
thisismydesign

Reputation: 25172

How to keep only the worker alive on Heroku free tier from within the app?

I'm testing an app with a worker and a web dyno on Heroku free tier and I'd like to keep the worker alive to be able to execute background tasks while letting the web dyno idle. By default they both go idle in 30 mins even if I have things queued on the worker.

I understand there're ways to keep the web dyno alive (and with that the worker as well), and there're ways to keep the web alive while scaling down the worker. However I'd need the worker alive and the web in idle.

I tried running a recurring job on the worker which would

  1. Restart the dyno.
  2. Scale the dyno down and then back up.

Both approaches worked (as in they restarted and scaled the dyno correctly) but the worker dyno would still idle after 30 mins (as if it's dependent on the web dyno). Edit: yep, that's pretty much the case as explained here: https://devcenter.heroku.com/articles/free-dyno-hours#dyno-sleeping

I could do this form the outside but it seems I'd have to constantly check for the state since a new restart doesn't seem to give me 30 mins headway. I'd also have to expose the API key which I'd like to avoid.

Upvotes: 2

Views: 1977

Answers (3)

poutingemoji
poutingemoji

Reputation: 1

My workaround was to just create two apps that deploy automatically from the same repository. Then, all you would need to do is enable the worker dyno for one and the web dyno for the other.

Upvotes: 0

thisismydesign
thisismydesign

Reputation: 25172

As a workaround I currently remove the web dyno and explicitly enable it when I need it. As explained here:

Worker-only Free dynos do not sleep since they do not respond to web requests.

Upvotes: 1

Nikita Ivanov
Nikita Ivanov

Reputation: 525

If I've gotten you right, you're trying to stop the web dyno and leave the worker dyno alive.

You could do that by going to the Resources tab: enter image description here

And then in the 'web' section: enter image description here

Press the pencil, toggle it off and press 'Confirm'.

Upvotes: 1

Related Questions