kantoku

raw JSON →
0.18.3 verified Mon Apr 27 auth: no python

A process manager built on top of Circus for running and monitoring multiple processes and sockets. Current version 0.18.3, actively maintained with recent updates for Python 3.13 support and reliability fixes.

pip install kantoku
error ModuleNotFoundError: No module named 'circus'
cause circus is a required dependency but not installed automatically? It is bundled, but some installations may fail if circus is missing.
fix
Run pip install circus to ensure circus is installed.
error AttributeError: module 'kantoku' has no attribute 'Arbiter'
cause Importing from the wrong module level.
fix
Use from kantoku import Arbiter instead of import kantoku; kantoku.Arbiter.
breaking In version 0.18.0, the arbitter's quit_on_failure behavior changed to quit when any watcher fails. Previous versions allowed continued operation.
fix Upgrade to >=0.18.2 or set `quit_on_failure=False` on the Arbiter.
gotcha Watcher commands are run as shell commands (via subprocess). Ensure proper quoting and escaping to avoid injection or argument parsing issues.
fix Use lists or shlex.quote() for commands with arguments, e.g., cmd=['python', '-m', 'http.server', '8000'] instead of a string.

Create a simple watcher and start the arbiter. Replace cmd with your own command.

from kantoku import Arbiter, Watcher

watcher = Watcher(
    name="my_app",
    cmd="python -m http.server 8000",
    numprocesses=1,
)

arbiter = Arbiter(
    watchers=[watcher],
)
arbiter.start()