Supervisor: Difference between revisions
Brian Wilson (talk | contribs) mNo edit summary |
Brian Wilson (talk | contribs) mNo edit summary |
||
Line 9: | Line 9: | ||
== Installation == | == Installation == | ||
% '''sudo | % '''sudo apt-get install supervisor''' | ||
If you want the latest version next do | |||
% '''sudo apt-get remove supervisor''' | |||
% '''sudo easy_install supervisor''' | |||
% '''sudo apt-get | This trick will cause the Debian/Ubuntu startup files to be left around which you can then edit. Like /etc/init.d/supervisor | ||
I added a user and group for "supervisor". | |||
== Configuration == | == Configuration == | ||
Line 23: | Line 24: | ||
DAEMON_OPTS="-c /etc/supervisor/supervisord.conf" | DAEMON_OPTS="-c /etc/supervisor/supervisord.conf" | ||
Change ip/port number | sudo mkdir /var/run/supervisor | ||
sudo chown supervisor /var/run/supervisor | |||
Things I changed in config file | |||
# Change location of logfile to /var/log/supervisord.log | |||
# Change pidfile to /var/run/supervisor/supervisord.pid | |||
# Changed ip/port number to allow remote access to web i/f | |||
# Set user to 'supervisor' | |||
# Enable reading files from /etc/supervisor/conf.d/ (see 'include') | |||
=== Do nothing test script === | === Do nothing test script === |
Revision as of 22:19, 31 March 2014
Q1. How do I set up a Python script so that I can easily start and stop it and monitor whether it's crashed?
Q2. Can I start multiple instances of the same script each with a different configuration?
Q3. Is Supervisor the answer?
Installation
% sudo apt-get install supervisor
If you want the latest version next do
% sudo apt-get remove supervisor % sudo easy_install supervisor
This trick will cause the Debian/Ubuntu startup files to be left around which you can then edit. Like /etc/init.d/supervisor I added a user and group for "supervisor".
Configuration
sudo mkdir /etc/supervisor echo_supervisord_conf | sudo tee /etc/supervisor/supervisord.conf
/etc/defaults/supervisor: DAEMON_OPTS="-c /etc/supervisor/supervisord.conf"
sudo mkdir /var/run/supervisor sudo chown supervisor /var/run/supervisor
Things I changed in config file
- Change location of logfile to /var/log/supervisord.log
- Change pidfile to /var/run/supervisor/supervisord.pid
- Changed ip/port number to allow remote access to web i/f
- Set user to 'supervisor'
- Enable reading files from /etc/supervisor/conf.d/ (see 'include')
Do nothing test script
Here is a script that will log to the system log, and sleep for 10 minutes. It handles control-C exit.
#/usr/bin/python import time, logging, logging.handlers logging.basicConfig(level=logging.INFO) log = logging.getLogger(__name__) handler = logging.handlers.SysLogHandler(address='/dev/log') log.addHandler(handler) log.info("Start doing nothing.") forever = True try: while forever: log.info("MARK") time.sleep(60 * 10) except KeyboardInterrupt: log.info("Interrupt detected.") log.info("Completed successfully.") exit(0)