{"id":27094,"library":"kantoku","title":"kantoku","description":"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.","status":"active","version":"0.18.3","language":"python","source_language":"en","source_url":"https://github.com/bentoml/kantoku","tags":["process-manager","circus","bentoml","monitoring"],"install":[{"cmd":"pip install kantoku","lang":"bash","label":"Install via pip"}],"dependencies":[{"reason":"Core dependency for process management","package":"circus","optional":false}],"imports":[{"note":"kantoku wraps Circus's Arbiter; importing directly from circus bypasses kantoku's extensions.","wrong":"from circus import Arbiter","symbol":"Arbiter","correct":"from kantoku import Arbiter"},{"note":"Use kantoku's Watcher for compatibility with kantoku's lifecycle management.","wrong":"from circus import Watcher","symbol":"Watcher","correct":"from kantoku import Watcher"}],"quickstart":{"code":"from kantoku import Arbiter, Watcher\n\nwatcher = Watcher(\n    name=\"my_app\",\n    cmd=\"python -m http.server 8000\",\n    numprocesses=1,\n)\n\narbiter = Arbiter(\n    watchers=[watcher],\n)\narbiter.start()","lang":"python","description":"Create a simple watcher and start the arbiter. Replace cmd with your own command."},"warnings":[{"fix":"Upgrade to >=0.18.2 or set `quit_on_failure=False` on the Arbiter.","message":"In version 0.18.0, the arbitter's quit_on_failure behavior changed to quit when any watcher fails. Previous versions allowed continued operation.","severity":"breaking","affected_versions":">=0.18.0,<0.18.2"},{"fix":"Use lists or shlex.quote() for commands with arguments, e.g., cmd=['python', '-m', 'http.server', '8000'] instead of a string.","message":"Watcher commands are run as shell commands (via subprocess). Ensure proper quoting and escaping to avoid injection or argument parsing issues.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Run `pip install circus` to ensure circus is installed.","cause":"circus is a required dependency but not installed automatically? It is bundled, but some installations may fail if circus is missing.","error":"ModuleNotFoundError: No module named 'circus'"},{"fix":"Use `from kantoku import Arbiter` instead of `import kantoku; kantoku.Arbiter`.","cause":"Importing from the wrong module level.","error":"AttributeError: module 'kantoku' has no attribute 'Arbiter'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}