Running django custom management commands with supervisord
The source
command is only available in bash
, and the supervisor command is run by sh
. I would recommend using a script to perform your commands:
/etc/supervisor/conf.d/my_app.conf
[program:my_app]
command = bash /path/to/app/init.sh
directory = /path/to/app/
user = ubuntu
autostart=true
autorestart=true
/path/to/app/init.sh
#!/bin/bash
beanstalkd -l 127.0.0.1 -p 11300
source /home/mf/virtualenvs/env/bin/activate
python manage.py command1
python manage.py command2
The only problem is that supervisor will only have control of the script, not the command(s). If you have a situation where you want supervisor to manage and keep alive a specific process, I would recommend using exec
in your bash init file, that way supervisor will have control of your process. E.g.
/path/to/app/init.sh
#!/bin/bash
exec beanstalkd -l 127.0.0.1 -p 11300
You may find this useful: http://sjsnyder.com/managing-virtualenv-apps-with-supervisor