A plugin for Supervisor that allows starting up services after dependent services have reached specific states. Based on ordered-startup-supervisord by Jason Corbett
Project description
Dependency support when starting Supervisor services
supervisord-dependent-startup is a plugin for
Supervisor that allows starting up services after
dependent services have reached specific states. This plugin is based on
ordered-startup-supervisord
by Jason Corbett.
The Problem
The problem can be seen in supervisor bug
#122. The priority order
in supervisor does determine startup order, but when autostart=true supervisor
doesn't wait for the previous process to be RUNNING in order to continue. What
is even harder is having initialization scripts that need to exit before
continuing. This software is meant to make this one use case easier.
How it works
This is an event listener for supervisor. This means it is run by supervisor on startup and supervisor will send it messages whenever a service reaches a particular process state. When configured it will wait till a supervisor subprocess gets to the configured state before starting dependent services.
Caveats
The plugin does not start groups. It can start services that are part of a group, but it won't directly start a group.
Installing
# From pypi
pip install supervisord-dependent-startup
# From github:
pip install -e git+https://github.com/bendikro/supervisord-dependent-startup.git#egg=supervisord-dependent-startup
Configuration
Configuration requires several things. First you need to configure
supervisord-dependent-startup in supervisor.conf as an event listener.
[eventlistener:dependentstartup]
command=python -m supervisord_dependent_startup
autostart=true
autorestart=unexpected
startretries=0
exitcodes=0,3
events=PROCESS_STATE
Service configuration options
There are three configuration options for a service ([program:*]) to control
how it is processed by supervisord-dependent-startup
dependent_startup
Mark this service to be handled by supervisord-dependent-startup. This must be
set to true for all services that depend on other services or is being
depended on by other services.
| Type | bool |
|---|---|
| Required | yes |
| Note | When setting this to true, autostart must be set to false |
dependent_startup_wait_for
Specify the services this service depends on before in can be started.
| Type | str |
|---|---|
| Required | no |
| Format | dependent_startup_wait_for=<parent-service>:<state[,state[..]]> [..] |
| Note | state must one or more comma separated values of: starting, running, backoff, stopping, exited, fatal |
Example with one dependency
To have a service named child depend on a service parent:
dependent_startup_wait_for=parent:running
Example with two dependencies
Multiple dependencies are separated by a white space. To have a service named
child depend on the services parent1 and parent2:
dependent_startup_wait_for=parent1:running parent2:running
dependent_startup_inherit_priority
Specify if the service should inherit its priority from the services it depends on.
| Type | bool |
|---|---|
| Required | no |
| Example | dependent_startup_inherit_priority=true |
Building and testing
Run tests
python setup.py test
Create source dist
python setup.py sdist
Run tests and code syntax check
tox
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 Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file supervisord-dependent-startup-1.3.1.tar.gz.
File metadata
- Download URL: supervisord-dependent-startup-1.3.1.tar.gz
- Upload date:
- Size: 22.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.18.4 setuptools/39.2.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/2.7.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba5e22f96ec1ecffff4c434f44366367d50ca563797dad0d65785e59562d45f7
|
|
| MD5 |
acfd25f3686fcd7ea213a05f6ff1a4f2
|
|
| BLAKE2b-256 |
39883085e620c636011d441498e73ad4870264f45a526fb6d6a4d99e328951e6
|
File details
Details for the file supervisord_dependent_startup-1.3.1-py2.py3-none-any.whl.
File metadata
- Download URL: supervisord_dependent_startup-1.3.1-py2.py3-none-any.whl
- Upload date:
- Size: 31.4 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.18.4 setuptools/39.2.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/2.7.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
68a1adad4076c16d028a6378f7602c68ff31a765feb45b52919301ec18105b67
|
|
| MD5 |
e180e9470d09eb69dcb7939ea857d9a9
|
|
| BLAKE2b-256 |
4645c2cc7a962cccc9c4096f100b01c18bfe245f005ea971f981b15f32653040
|