https://github.com/al91liwo/fastapi-profiler-lite
A lightweight, zero-configuration performance profiler for FastAPI applications
https://github.com/al91liwo/fastapi-profiler-lite
api api-rest fastapi middleware performance performance-analysis profiling python rust
Last synced: 11 days ago
JSON representation
A lightweight, zero-configuration performance profiler for FastAPI applications
- Host: GitHub
- URL: https://github.com/al91liwo/fastapi-profiler-lite
- Owner: al91liwo
- License: mit
- Created: 2025-03-29T17:41:02.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-11-29T11:08:15.000Z (7 months ago)
- Last Synced: 2026-03-24T11:50:27.505Z (3 months ago)
- Topics: api, api-rest, fastapi, middleware, performance, performance-analysis, profiling, python, rust
- Language: JavaScript
- Homepage:
- Size: 12.5 MB
- Stars: 12
- Watchers: 1
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: docs/contributing.md
- License: LICENSE
Awesome Lists containing this project
README
# FastAPI Profiler Lite
A lightweight, zero-configuration performance profiler for FastAPI applications. Monitor your API performance in real-time without external dependencies.
## Why FastAPI Profiler?
Monitoring API performance shouldn't require complex setups or external services. FastAPI Profiler gives you instant visibility into your application's performance with just one line of code.
- **Instant insights** - See which endpoints are slow without complex instrumentation
- **Zero configuration** - Works out of the box with sensible defaults
- **Rust-powered statistics** - High-performance stats calculation using Rust
- **Developer-friendly** - Designed for both development and lightweight production use
## Installation
```bash
pip install fastapi-profiler-lite
```
For more installation options, see the [Installation Guide](docs/installation.md).
## Quick Start
```python
from fastapi import FastAPI
from fastapi_profiler import Profiler
app = FastAPI()
# Add the profiler with just one line
Profiler(app)
@app.get("/")
async def read_root():
return {"Hello": "World"}
```
That's it! Visit `/profiler` to see the performance dashboard.
## Features
- **One-line integration** - Add to any FastAPI app with minimal code
- **Real-time dashboard** - Live updates with automatic refresh
- **Response time tracking** - Measure execution time of each request
- **Endpoint analysis** - Identify your slowest and most used endpoints
- **Request filtering** - Search and sort through captured requests
- **Visual metrics** - Charts for response times and request distribution
- **Database monitoring** - Tracking of SQLAlchemy queries
- **Minimal overhead** - Designed to have low performance impact
## Technical Details
- **Rust Core**: Statistics calculations are powered by a Rust extension using [PyO3](https://github.com/pyo3) for improved performance. Benchmarks comparing to NumPy will be published soon. Pre-built wheels are provided for all major platforms, but if you encounter any issues, please open a GitHub issue.
- **UI Framework**: The dashboard uses [Tabler.io](https://tabler.io/), a premium and open-source admin dashboard template, providing a clean and modern interface.
- **Database Instrumentation**: Track database queries with SQLAlchemy integration. Manually instrument your SQLAlchemy engines to see detailed query performance data.
## Running Examples
The repository includes several examples to demonstrate different features:
```bash
# Basic example with simple endpoints
python example.py
# Example with SQLAlchemy database instrumentation
python examples/sqlalchemy_demo.py
# Example with multiple database engines
python examples/multi_db_demo.py
# Real-time continuous monitoring demo
python examples/realtime_demo.py
# Stress test with high load
python examples/stress_test.py
```
### Database Instrumentation Example
To manually instrument database engines:
```python
from fastapi import FastAPI
from sqlalchemy import create_engine
from fastapi_profiler import Profiler
from fastapi_profiler.instrumentations import SQLAlchemyInstrumentation
app = FastAPI()
# Create SQLAlchemy engines
primary_db = create_engine("sqlite:///./primary.db")
analytics_db = create_engine("sqlite:///./analytics.db")
# Initialize profiler
profiler = Profiler(app)
# Manually instrument each database engine
SQLAlchemyInstrumentation.instrument(primary_db)
SQLAlchemyInstrumentation.instrument(analytics_db)
```
Visit `/profiler` to see the dashboard with database query performance data.
## Documentation
- [Installation](https://github.com/al91liwo/fastapi-profiler/blob/main/docs/installation.md)
- [Configuration](https://github.com/al91liwo/fastapi-profiler/blob/main/docs/configuration.md)
- [Contributing](https://github.com/al91liwo/fastapi-profiler/blob/main/docs/contributing.md)
- [Extending](https://github.com/al91liwo/fastapi-profiler/blob/main/docs/extending.md)
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.