Skip to content

A curated list of libraries, tools, blog articles, and books to help profile and optimize your Django project

License

Notifications You must be signed in to change notification settings

st3v3nmw/awesome-django-performance

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Awesome Django Performance Awesome

A curated list of libraries, tools, blog articles, and books to help profile and optimize your Django project.

Contents

Profiling

Tools

  • 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.

Database

Tools

  • 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.

Articles

Caching

Tools

  • 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.

Articles

Serialization

Tools

  • 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.

Articles

Tasks

Tools

  • 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.

Articles

Servers

Tools

  • 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.

Articles

Testing

Tools

  • Locust - An easy to use, scriptable and scalable performance testing tool.
  • hey - HTTP load generator, ApacheBench (ab) replacement.

Monitoring

Tools

  • 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.

Books