A curated list of libraries, tools, blog articles, and books to help profile and optimize your Django project.
- Django Silk - Silk is a live profiling and inspection tool for the Django framework. Silk intercepts and stores HTTP requests and database queries before presenting them in a user interface for further inspection.
- Django Debug Toolbar - A configurable set of panels that display various debug information about the current request/response.
- pyinstrument - Call stack profiler for Python. Shows you why your code is slow!
- cProfile - cProfile and profile provide deterministic profiling of Python programs.
- dj-tracker -
dj-tracker
is an app that tracks your queries to help detecting some possible performance optimisations listed in Database access optimization - Pyroscope - Grafana Pyroscope is an open source software project for aggregating continuous profiling data. It allows you to profile your applications in real-time, and then analyze the data to identify bottlenecks and performance issues.
- django-auto-prefetching - Never worry about n+1 performance problems again (DRF views level).
- djangorestframework-queryfields - Allows clients to control which fields will be sent in the API response.
- django-virtual-models - Improve performance and maintainability with a prefetching layer in your Django project.
- django-perf-rec - Django-perf-rec is like Django's assertNumQueries on steroids. It lets you track the individual queries and cache operations that occur in your code.
- django-auto-prefetch - Automatically prefetch foreign key values as needed (ORM level).
- django-zen-queries - Explicit control over database query execution in Django applications.
- nplusone - Auto-detecting the n+1 queries problem in Python.
- django-pickling - Efficient pickling for Django models.
- django-test-query-counter - A Django toolkit for controlling query count when testing.
- PgBouncer - Lightweight connection pooler for PostgreSQL.
- psycogreen - Integration of psycopg2 with coroutine libraries.
- Database access optimization - Outlines the steps to take when attempting to optimize your database usage.
- Django Performance Improvements - Part 1: Database Optimizations
- Automating Performance Testing in Django
- Performing raw SQL queries
- django-cacheback - Smart caching for Django using Celery to refresh cached items asynchronously.
- django-memoize - A cache for function or method results.
- django_model_cached_property - Useful for caching of property results for more time than lifetime of object during the request.
- django-cacheops - A slick ORM cache with automatic granular event-driven invalidation.
- django-cachalot - Caches your Django ORM queries and automatically invalidates them.
- django-cache-machine - Automatic caching and invalidation for Django models through the ORM.
- django-request-cache - A Django app that provides a new cache on every request object. The cache is only kept within the request/response cycle.
- django-ormcache - A cache manager mixin that provides some caching of objects for the ORM.
- Varnish Cache - A web application accelerator also known as a caching HTTP reverse proxy.
- PolyScale.ai - A high performance Data Delivery Network (DDN) that accelerates databases. Using smart caching, it improves query performance, lowers latency and makes data access and scale engineering a breeze, both on premise and at the edge.
- drf_orjson_renderer - A JSON renderer and parser for Django Rest Framework using the orjson library. Backed by Rust, orjson is safe, correct and fast.
- Django Compression Middleware - Django middleware to compress responses using algorithms such as Zstandard, Brotli, and gzip.
- serpy - A super simple object serialization framework built for speed.
- django-rest-marshmallow - Marshmallow schemas for Django REST framework.
- marshmallow - An ORM/ODM/framework-agnostic library for converting complex datatypes, such as objects, to and from native Python datatypes.
- Improve Serialization Performance in Django Rest Framework - How we reduced serialization time by 99%!
- Python Serialization Benchmark - A set of benchmarks for Python serialization frameworks.
- Celery - Distributed Task Queue.
- Celery Flower - Real-time monitor and web admin for Celery distributed task queue.
- django_dramatiq - A Django app that integrates with Dramatiq.
- Django-RQ - A simple app that provides django integration for RQ (Redis Queue).
- Django Q - A multiprocessing distributed task queue for Django.
- gevents - A coroutine-based Python networking library that uses greenlet to provide a high-level synchronous API on top of the libev or libuv event loop.
- Locust - An easy to use, scriptable and scalable performance testing tool.
- hey - HTTP load generator, ApacheBench (ab) replacement.
- Sentry SDK - The official Python SDK for Sentry.io (has an APM offering).
- statsd - Daemon for easy but powerful stats aggregation.
- django-prometheus - Export Django monitoring metrics for Prometheus.io.
- django-postgres-metrics - A Django application that exposes a bunch of PostgreSQL database metrics.
- Grafana - Operational dashboards for your data here, there, or anywhere.
- apm-agent-python - Official Python agent for Elastic APM.
- New Relic Python Agent - Instruments your application for performance monitoring and advanced performance analytics with New Relic.
- The Temple of Django Database Performance - By Andrew Brookins.
- High Performance Django - By Peter Baumgartner and Yann Malet.