Dependencies¶
What django-perfy requires, what installs automatically, and what is opt-in
behind an extra. Source of truth: pyproject.toml.
Runtime requirements¶
| Requirement | Version |
|---|---|
| Python | 3.10+ |
| Django | 4.2+ (tested against 4.2, 5.0, 5.1, 5.2, 6.0) |
Core dependencies¶
Installed automatically with pip install django-perfy:
| Package | Version | Why it is needed |
|---|---|---|
Django |
>=4.2 |
The framework being monitored |
celery |
>=5.2 |
Persistence, aggregation, snapshot and retention tasks |
psutil |
>=5.9 |
CPU, memory, disk and process metrics for resource snapshots |
redis |
>=4.5 |
Redis metrics collection and the default Celery broker client |
Celery and Redis are dependencies, not a requirement to run them
These packages install so the tasks and collectors can import, but a running Celery worker or Beat scheduler is optional — a built-in background timer keeps the dashboard populated without them. See Celery setup for exactly what needs Beat and what does not.
Optional extras¶
Install with pip install "django-perfy[<extra>]":
| Extra | Adds | For |
|---|---|---|
reports |
jinja2>=3.1, weasyprint>=60 |
The staff dashboard and PDF report engine |
dashboard |
jinja2>=3.1 |
The dashboard HTML pages only (no PDF) |
all |
jinja2>=3.1, weasyprint>=60 |
A full deployment |
dev |
pytest, pytest-django, black, autoflake, build, pre-commit |
Developing the package |
docs |
mkdocs-material>=9.5 |
Building this documentation site |
WeasyPrint system libraries¶
The reports and all extras pull in WeasyPrint
for PDF rendering. WeasyPrint depends on native libraries — principally
Pango and Cairo — that pip does not install. Install them through
your operating system's package manager before relying on PDF downloads, per
WeasyPrint's
installation guide.
PDF is the only path that needs them
The HTML report preview imports WeasyPrint lazily, so the dashboard and previews work even when the native libraries are absent. Only the PDF download and email paths require Pango and Cairo.
Optional integrations¶
| Integration | Needed for |
|---|---|
| Django Channels | WebSocket monitoring via WebSocketLoggingMixin — only if your project uses Channels consumers |
| A Celery broker (Redis, RabbitMQ, …) | Running the Celery tasks and Beat schedule, rather than relying on the built-in timer |
| An SMTP server | Emailing reports |