Generate flamecharts and error graphs from python stacktraces
Project description
pystackflame
Generate flamecharts from Python stacktraces in logs
pystackflame is a command-line tool that parses Python logs for stack traces and turns them into flamecharts or weighed graphs for performance analysis, visualization, and debugging.
Features
- Generate FlameGraph-compatible output
- Pickle rustworkx-based graphs
- Build weighted execution graphs from logs using
rustworkx - Python 3.14+ support
- Fast and lightweight CLI built with
click - Developer-friendly with optional linting via
ruff
Installation
We recommend using uv for fast dependency management:
uv sync -p 3.14
source .venv/bin/activate
pystackflame --help
Possible applications
Web Service Error Hotspots
Aggregate Python exceptions in your web server (e.g. Flask/FastAPI/Django) logs to quickly pinpoint which request-handling paths are failing most often without any need of restarting your application.
pystackflame flame /var/log/myapp/**/*.log -o web_errors.flame
Analysis of the historical data
Identify problematic places in the codebase that require the most attention.
pystackflame flame /var/log/all_logs_we_have/**/*.log -o errors.flame
./flamegraph.pl errors.flame > example.svg
Performance Regression Detection in CI
As part of your GitHub Actions or GitLab CI pipeline, run against the previous and current test logs to compare flamecharts—spot new slow-paths introduced by recent commits.
pystackflame flame old_tests.log -o baseline.flame
pystackflame flame new_tests.log -o current.flame
Visualize of diff the two SVGs or flame files to analyze regressions
Batch-Job Profiling
For long-running data-processing jobs (ETL, ML training, batch analytics), collect stacktraces on failure or periodically dump traces, then visualize the cumulative “hot” stacks to optimize slow stages.
pystackflame flame /logs/batch_job_*.log -o batch_profile.flame
Chaos-Engineering Fault Analysis
During fault-injection experiments, collect and compare flamecharts from healthy vs. faulted runs to understand how injected errors propagate.
pystackflame flame healthy.log -o healthy.flame
pystackflame flame chaos.log -o chaos.flame
Advanced filtering
You can specify an option
--trace-filter / -tf [PATH_PREFIX]
to filter tracebacks to include only those paths that start with the given prefix and
filter out the prefix out from the output. This is useful to restrict the flamechart or
graph output to only relevant code paths with relevant names.
Additionally, you can specify multiple --exclude / -e [PATH_PREFIX] to exclude traces
that starts from the given path prefix. Wildcard is supported as well.
Example
This command
pystackflame flame ~/test.log -tf '/opt/app/venv/lib64/python3.9/site-packages'
Will produce the following flame data output
package;database;session.py;wrapper 2
package;apihelper.py;_make_request 2
package;apihelper.py;_check_result 2
And this command
pystackflame flame ~/test.log
Will give you this
/;opt;app;venv;lib64;python3.9;site-packages;package;database;session.py;wrapper 2
/;opt;app;venv;lib64;python3.9;site-packages;package;apihelper.py;_make_request 2
/;opt;app;venv;lib64;python3.9;site-packages;package;apihelper.py;_check_result 2
However, this command
pystackflame flame ~/test.log -tf '/opt/app/venv/lib64/python3.9/site-packages/package/apihelper.py'
Will produce the following output
_make_request 2
_check_result 2
Usage
- The filter must start with
/(absolute path). *can be used to match any folder (e.g.,/var/log/app-logs/dates/*/application).- The filter must not end with
/.
Result:
- Only stack trace frames that match the filter will be added to the flamechart or graph.
- Useful for narrowing down logs to project-specific code or a specific dependency tree.
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 pystackflame-0.1.3.tar.gz.
File metadata
- Download URL: pystackflame-0.1.3.tar.gz
- Upload date:
- Size: 7.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b87082a3fe6b2d41602aabbdbec9fa8ed6bce50e48f83f27ed5f91a4148b412e
|
|
| MD5 |
233aa88751d28ef3aa692ba4b41f7351
|
|
| BLAKE2b-256 |
552b19ce77e6ae0bad7fa1cd4f5993088cb982b53ed90163b5e32a64cc703144
|
File details
Details for the file pystackflame-0.1.3-py3-none-any.whl.
File metadata
- Download URL: pystackflame-0.1.3-py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
34ec0d4caf14ecb60702dc966af9bd7006366b09681525014d0913ae28f9b27c
|
|
| MD5 |
f5b05efcd1d55d6ac8a9d7228e621643
|
|
| BLAKE2b-256 |
77f1fcca200102c9b6a0a8b3815cb06669bb445aaf42c307d67c108ad52fea80
|