Tools for communicating with runit / daemontools supervisors.
Project description
This module provide a methods to handle runit or daemontools based supervised services, using the control file provided. Here is a small example:
>>> import supervise >>> s = supervise.Service('test') >>> print s.status() {'action': None, 'status': 0, 'uptime': 300L, 'pid': None} >>> s.start() >>> print s.status() {'action': None, 'status': 1, 'uptime': 3L, 'pid': 27450}
Read the manpage of runsv(8) for more information. Also read the documentation for ServiceStatus to known how to parse status information.
History
Last month I needed to install runit in some servers to supervise a couple of services. Unfortunately my management interface cannot handle the services anymore, so I decided to write a small module in python to solve this handicap, and that is the result!.
With this module you can handle in python environment a number of runit scripts. I think that this might be work for daemontools too, but I do not test yet. Let’s see an example:
>>> import supervise >>> c = supervise.Service("/var/service/httpd") >>> print s.status() {'action': 'normal', 'status': 'up', 'uptime': 300L, 'pid': None} >>> if s.status()['status'] == supervise.STATUS_DOWN: print "service down" service down >>> s.start() >>> if s.status()['status'] == supervise.STATUS_UP: print "service up" service up
Personally I use this module with rpyc library to manage remotely the services running in a host, but it too easy making a web interface, for example using bottle:
import supervise import simplejson from bottle import route, run @route('/service/status/:name') def service_status(name): return simplejson.dumps( supervise.Service("/var/service/" + name).status() ) @route('/service/up/:name') def service_up(name): c = supervise.Service("/var/service/" + name) c.start() return "OK UP" @route('/service/down/:name') def service_down(name): c = supervise.Service("/var/service/" + name) c.down() return "OK DOWN" if __name__ == "__main__": run()
Now you can stop your service just only point your browser http://localhost/service/down/httpd (to down http service in this case).
Enjoy!
- author:
Andres J. Diaz <ajdiaz@connectical.com>
- date:
2009-11-21
- maintainer:
Peter Ruibal <ruibalp@gmail.com>
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
File details
Details for the file supervise-1.1.1.tar.gz
.
File metadata
- Download URL: supervise-1.1.1.tar.gz
- Upload date:
- Size: 5.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8671e1fedf064c24190d468be8248433032917167605f585b4c2c55a27be4132 |
|
MD5 | 0bbff85fa5897dddfdfbf0cbc7aa3eab |
|
BLAKE2b-256 | f68de4d2f8e975fa5364f217fce875420beac2de45c22b2c4ac0c6c64355d5e2 |
File details
Details for the file supervise-1.1.1-py2.7.egg
.
File metadata
- Download URL: supervise-1.1.1-py2.7.egg
- Upload date:
- Size: 10.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dc24e08bac183255405ced40106d2e25fc2777b8256b5d6ae1c9fd55187f3053 |
|
MD5 | 76be3c072e34eeb8aef3a394197cd225 |
|
BLAKE2b-256 | b8868800653f7ea85e3ab38be4f4a556b11f1b12ff8fd445fd265f6b75cb9408 |
File details
Details for the file supervise-1.1.1-py2.6.egg
.
File metadata
- Download URL: supervise-1.1.1-py2.6.egg
- Upload date:
- Size: 10.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 949aab2e508a709c9b5347a57ba7fd9cba586e1b6125d232340d9a17846415fb |
|
MD5 | dc49659a3ba4baecec46b8e6b6be5682 |
|
BLAKE2b-256 | 448d4884b5d5263ad999597c00516f417a5e72fa686ff99a2c79e25b7f41394b |