/supvisors

Supvisors: A Control System for Distributed Applications

Primary LanguagePythonApache License 2.0Apache-2.0

Supvisors

PyPI version Python Versions License Build Status Coverage Status Documentation Status Downloads

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 a PyZmq 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.

Image of Supvisors' Dashboard

Supervisor Enhancements

Supvisors proposes a contribution to the following Supervisor issues:

Supported Platforms

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.

Dependencies

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.

Installation

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]

Documentation

You can view the current Supvisors documentation on Read the Docs.

You will find detailed installation and configuration documentation.

Reporting Bugs and Viewing the Source Repository

Please report bugs in the GitHub issue tracker.

You can view the source repository for Supvisors.

Contributing

Not opened yet.