Supvisors is a Control System for Distributed Applications, based on multiple instances of Supervisor running over multiple nodes.
The main features are:
- a new web-based dashboard that replaces the default dashboard of Supervisor and allows to control all the Supervisor instances declared,
- an extended XML-RPC API to control applications and processes over the multiple Supervisor instances,
- a notification interface to get the events from multiple Supervisor instances on a
websocket
or on aPyZmq
socket.
A set of application and program rules can be added to manage:
- the starting sequence of the applications,
- the stopping sequence of the applications,
- the starting strategy of the processes,
- the strategy to apply when a process crashes or when a node shuts down,
- the strategy to apply when conflicts are detected.
The Supervisor program supervisorctl
has been extended to include the additional XML-RPC API.
Also provided in the scope of this project:
- a
JAVA
client with a full implementation of the Supervisor and Supvisors XML-RPC API ; - a
Flask-RESTX
application that exposes the Supervisor and Supvisors XML-RPC API through a REST API.
Supvisors proposes a contribution to the following Supervisor issues:
- #122 - supervisord Starts All Processes at the Same Time
- #177 - Dynamic numproc change
- #456 - Add the ability to set different "restart policies" on process workers
- #520 - allow a program to wait for another to stop before being stopped?
- #591 - New Feature: disable/enable
- #723 - Restart waits for all processes to stop before starting any
- #763 - unexpected exit not easy to read in status or getProcessInfo
- #874 - Bring down one process when other process gets killed in a group
- #1023 - Pass arguments to program when starting a job?
- #1150 - Why do event listeners not report the process exit status when stopped/crashed?
- #1455 - using supervisorctl with -s does not provide access to the extended API
- #1504 - Web interface: Add stop group Action
Supvisors has been tested and is known to run on Linux (Rocky 8.5, RedHat 8.2 and Ubuntu 20.04 LTS). It will likely work fine on most UNIX systems.
Supvisors will not run at all under any version of Windows.
Supvisors >= 0.2 works with Python 3.6 or later.
Supvisors 0.1 (available on PyPi) works with Python 2.7 (and former versions of Supervisor, i.e. 3.3.0) but is not maintained anymore.
Supvisors has dependencies on:
Package | Optional | Minimal release |
---|---|---|
Supervisor | 4.2.4 | |
psutil | X | 5.7.3 |
matplotlib | X | 3.3.3 |
lxml | X | 4.6.2 |
Flask-RESTX | X | 0.5.1 (py36), 1.1.0 (py37+) |
PyZMQ | X | 20.0.0 |
websockets | X | 10.2 (py37+) |
Please note that some of these dependencies may have their own dependencies.
Versions are given for information. Although Supvisors has been developed and tested with these releases, the minimal release of each dependency is unknown. Other releases are likely working as well.
Supvisors can be installed with pip install
:
# minimal install (including only Supervisor and its dependencies)
[bash] > pip install supvisors
# extra install for all optional dependencies
[bash] > pip install supvisors[all]
You can view the current Supvisors documentation on Read the Docs.
You will find detailed installation and configuration documentation.
Please report bugs in the GitHub issue tracker.
You can view the source repository for Supvisors.
Not opened yet.