From b8d8c22dc89418b741d2f0b9bf103e813700a6a5 Mon Sep 17 00:00:00 2001 From: user Date: Sat, 21 Feb 2026 16:54:29 +0100 Subject: [PATCH] feat: add --cprofile flag for runtime profiling Writes cProfile stats to a file on shutdown for performance analysis. Enable in compose.yaml for container profiling. Co-Authored-By: Claude Opus 4.6 --- .gitignore | 1 + compose.yaml | 2 +- src/bouncer/cli.py | 7 +++++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index dfb9ff0..5ef1448 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ build/ .pytest_cache/ .mypy_cache/ *.log +*.prof # Personal config (keep example only) config/bouncer.toml diff --git a/compose.yaml b/compose.yaml index 9474871..078503b 100644 --- a/compose.yaml +++ b/compose.yaml @@ -15,4 +15,4 @@ services: volumes: - ./src:/app/src:Z,ro - ./config:/data:Z - command: ["-c", "/data/bouncer.toml", "-v"] + command: ["-c", "/data/bouncer.toml", "-v", "--cprofile", "/data/bouncer.prof"] diff --git a/src/bouncer/cli.py b/src/bouncer/cli.py index 9f4ef57..fb07de0 100644 --- a/src/bouncer/cli.py +++ b/src/bouncer/cli.py @@ -25,6 +25,13 @@ def parse_args(argv: list[str] | None = None) -> argparse.Namespace: action="store_true", help="enable debug logging", ) + parser.add_argument( + "--cprofile", + type=Path, + default=None, + metavar="PATH", + help="enable cProfile, write stats to PATH on shutdown", + ) parser.add_argument( "--version", action="version",