0

When my server (centOS 7 hosted on a vagrant VM) reboots, my Python Flask application (served up by Gunicorn using nginx as a reverse proxy) throws internal server errors (according to the stack traces I'm getting, it can't find templated html files even...) until a sudo supervisorctl reload is issued. After this, the application runs just fine and my life is good but that won't do now will it?

I suspect a race condition (maybe between supervisor and gunicorn?). I tried adding a sleep to the command in the specific program's .ini file but this didn't help anything.

Has anyone else encountered something like this? If not, does anyone know of how to delay the start of the entire supervisor utility (not just one specific program)?

For reference, here's what the contents of my .ini file look like:

[program:test]
command=/bin/gunicorn -b localhost:8000 -w 2 the_app:app
directory=/var/www/test
user=vagrant
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true

Again, this works fine after supervisor is reloaded it just doesn't seem to start up correctly (presumably because of some kind of race condition).

For completeness: the addition of the sleep condition caused the .ini file to look like:

[program:test]
command=bash -c "sleep 10 && exec /bin/gunicorn -b localhost:8000 -w 2 the_app:app"
directory=/var/www/test
user=vagrant
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true

Aside from not fixing the problem (lol), this feels dirty so I strongly prefer not to do something like this.

Thanks in advance for any guidance.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.