Circus is a robust Python program designed to run, monitor, and manage multiple processes and sockets. It provides a flexible way to supervise long-running services, akin to tools like Supervisor, but with a focus on programmatic control and extensibility. The current version is 0.19.0. Releases are somewhat irregular, often tied to Python version support or dependency updates.
pip install circusVerified import paths — ran on the pinned version, not inferred.
This quickstart demonstrates how to programmatically define a watcher for a simple Python script and manage it using the Circus Arbiter. Run this script, and it will start a child process that prints messages every 2 seconds until the Arbiter is stopped via Ctrl+C.
Upgrade to Python 3.7 or newer, or use an older Circus version compatible with your Python environment.
Ensure `tornado` is `>=5.0` and `pyzmq` is `>=17.0` for Circus 0.17.0+. Use `pip install --upgrade circus` to automatically resolve the correct dependency versions.
Review your `circus.ini` files for interpolation directives. If issues arise, consider rewriting parts of your configuration or escaping special characters that might be misinterpreted by `RawConfigParser`.
Update any shell scripts or automation that executes `circusctl` to correctly interpret non-zero exit codes as indications of command failure.
Run `pip install circus` to install the library.
Upgrade your Tornado installation: `pip install --upgrade tornado` or ensure `pip install circus` resolves compatible versions.
Check your `circus.ini` file for correct syntax, missing sections/options, or unintended interpolation. Ensure options are explicitly defined.
Examine the error message from `circusctl` for the specific failure reason. Update calling scripts to handle non-zero exit codes from `circusctl`.