Monitor, kill, and analyze Postgres queries.
Project description
django-pgactivity
django-pgactivity
makes it easy to view, filter, and kill active Postgres queries.
Some of the features at a glance:
- The
PGActivity
proxy model andpgactivity
management command for querying and filtering the Postgres pg_stat_activity view. pgactivity.context
andpgactivity.middleware.ActivityMiddleware
for annotating queries with application metadata, such as the request URL.pgactivity.cancel
andpgactivity.terminate
for canceling and terminating queries. ThePGActivity
model manager also has these methods.pgactivity.timeout
for dynamically setting the statement timeout.
Quick Start
Basic Command Usage
Use python manage.py pgactivity
to view and filter active queries. Output looks like the following:
39225 | 0:01:32 | IDLE_IN_TRANSACTION | None | lock auth_user in access exclusiv
39299 | 0:00:15 | ACTIVE | None | SELECT "auth_user"."id", "auth_user"."password
39315 | 0:00:00 | ACTIVE | None | WITH _pgactivity_activity_cte AS ( SELECT pid
The default output attributes are:
- The process ID of the connection.
- The duration of the query.
- The state of the query (see the Postgres docs for values).
- Attached context using
pgactivity.context
. - The query SQL.
Apply filters with -f
(or --filter
). Here we query for all active queries that have a duration longer than a minute:
python manage.py pgactivity -f state=ACTIVE -f 'duration__gt=1 minute'
Cancel or terminate activity with --cancel
or --terminate
. Here we terminate a query based on the process ID:
python manage.py pgactivity 39225 --terminate
Attaching Context
You can attach context to queries to better understand where they originate using pgactivity.context
or by adding pgactivity.middleware.ActivityMiddleware
to settings.MIDDLEWARE
. Underneath the hood, a comment is added to the SQL statement and surfaced in django-pgactivity
.
When using the middleware, the url
of the request and the method
of the request are automatically added. Here's what the output looks like when using the pgactivity
command:
39299 | 0:00:15 | ACTIVE | {"url": "/admin/", "method": "GET"} | SELECT "auth_use
Proxy Model
Use the pgactivity.models.PGActivity
proxy model to query the Postgres pg_stat_activity view. The model contains most of the fields from the view, and the cancel
and terminate
methods can be applied to the queryset.
Setting the Statement Timeout
Dynamically set the SQL statement timeout of code using `pgactivity.timeout``:
import pgactivity
@pgactivity.timeout(0.5)
def my_operation():
# Any queries in this operation that take over 500 milliseconds will throw
# django.db.utils.OperationalError.
Compatibility
django-pgactivity
is compatible with Python 3.9 - 3.13, Django 4.2 - 5.1, Psycopg 2 - 3, and Postgres 13 - 17.
Documentation
View the django-pgactivity docs here to learn more about:
- The proxy models and custom queryset methods.
- Attaching application context to queries.
- Using and configuring the management command.
- Setting dynamic statement timeouts.
Installation
Install django-pgactivity
with:
pip3 install django-pgactivity
After this, add pgactivity
to the INSTALLED_APPS
setting of your Django project.
Contributing Guide
For information on setting up django-pgactivity for development and contributing changes, view CONTRIBUTING.md.
Creators
Project details
Release history Release notifications | RSS feed
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
File details
Details for the file django_pgactivity-1.7.0.tar.gz
.
File metadata
- Download URL: django_pgactivity-1.7.0.tar.gz
- Upload date:
- Size: 13.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.12.7 Linux/5.15.0-1057-aws
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7af8e8b47959b8aaa0155c9b08510a1cf892c07609579212dbf7f8df8a0cdec2 |
|
MD5 | eb08b0258a59dfd6357232d6d9ec6f83 |
|
BLAKE2b-256 | 82323a83b1801cb1ced0278b67fcd2fa1a67410378649a6a78a5a05a11147c5d |
File details
Details for the file django_pgactivity-1.7.0-py3-none-any.whl
.
File metadata
- Download URL: django_pgactivity-1.7.0-py3-none-any.whl
- Upload date:
- Size: 14.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.12.7 Linux/5.15.0-1057-aws
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 16e5826a80140f149f343c4101a9098319212239cbdf57a73e68978db918da19 |
|
MD5 | 66b5f2527388ff2a7fe95790cc4cbba6 |
|
BLAKE2b-256 | e657185d745b1e5feff89d4ba1f684053eee1b15757010302da456e81a2c7677 |