14

I added a bottle server that uses python's cassandra library, but it exits with this error:
Bottle FATAL Exited too quickly (process log may have details)
log shows this:
File "/usr/local/lib/python2.7/dist-packages/cassandra/cluster.py", line 1765, in _reconnect_internal raise NoHostAvailable("Unable to connect to any servers", errors)

So I tried to run it manually using supervisorctl start Bottle ,and then it started with no issue. The conclusion= Bottle service starts too fast (before the needed cassandra supervised service does): a delay is needed!

Martijn Pieters
  • 889,049
  • 245
  • 3,507
  • 2,997
Zack S
  • 1,192
  • 1
  • 20
  • 37

2 Answers2

25

This is what I use:

[program:uwsgi]
command=bash -c 'sleep 5 && uwsgi /etc/uwsgi.ini'
DeeY
  • 816
  • 8
  • 14
  • 19
    `command=bash -c "sleep 5 && exec uwsgi /etc/uwsgi.ini"`: exec will replace bash with uwsgi, double quotes will ensure that enclosed string will be sent to bash as a single argument. – Slotos Jul 03 '15 at 18:20
  • 3
    When I do this, the process keeps running in the background after i do "supervisorctl stop" – kgreenek Nov 30 '17 at 01:39
  • 1
    @kgreenek Yes, and the previous comment will fix that. Unless your actual program is broken. – Torsten Bronger Nov 23 '19 at 18:36
6

Not happy enough with the sleep hack I created a startup script and launched supervisorctl start processname from there.

[program:startup]
command=/startup.sh
startsecs = 0
autostart = true
autorestart = false
startretries = 1
priority=1

[program:myapp]
command=/home/website/venv/bin/gunicorn /home/website/myapp/app.py
autostart=false
autorestart=true
process_name=myapp

startup.sh

#!/bin/bash
sleep 5
supervisorctrl start myapp

This way supervisor will fire the startup script once and this will start myapp after 5 seconds, mind the autostart=false and autorestart=true on myapp.

MGP
  • 2,476
  • 32
  • 31