Limit django query amounts in a certain scope
Project description
Ever wanted to limit how many db queries a certain function or view can make? You're in luck!
Get it from PyPi:
pip install django-query-limiter[formatting]
Basic usage
from your_django_models import Model
from query_limiter import limit_queries
with limit_queries(1):
print(Model.objects.first()) # Prints your model's first object
with limit_queries(1):
print(Model.objects.first()) # Prints your model's first object
print(Model.objects.first()) # Raises QueryLimitError
It can also be used as a function decorator, and can limit queries on a per-database level:
from your_django_models import Model
from query_limiter import limit_queries
@limit_queries(10, db_connections=['default'])
def my_view(request):
return Model.objects.first()
Multiple limits can be specified, and the first one to be reached will raise a QueryLimitExceeded
exception:
from your_django_models import Model
from query_limiter import limit_queries
from datetime import timedelta
@limit_queries(
amount=2,
individual_max_time=timedelta(milliseconds=100),
total_max_time=timedelta(seconds=1),
)
def my_view(request):
Model.objects.first() # if this query takes more than 100ms -> QueryLimitExceeded
Model.objects.first() # if the total time of all queries takes more than 1s -> QueryLimitExceeded
Model.objects.first() # if this query is reached -> QueryLimitExceeded
You can globally disable the query limiter:
from your_django_models import Model
from query_limiter import limit_queries, disable_query_limiter
if settings.ENVIROMENT == 'production':
disable_query_limiter()
with limit_queries(1):
print(Model.objects.first()) # Prints your model's first object
print(Model.objects.first()) # Prints your model's first object
The default behaviour is to limit the connections to all databases. This can be globally overwriten like so:
from query_limiter import set_default_databases
set_default_databases(['your_database_name', 'another_database_name'])
Unless the db connections are specified in the limit_queries
decorator, these databases will be used.
Formatting
The formatting
extra:
- humanizes all timedelta outputs
- uses
sqlparse
to format the queries to be more human readable
Project details
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
Close
Hashes for django-query-limiter-0.2.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | a072558c69bff7fdf920655d5ad6fe36475c611fb6e03a34ce2f80051622a848 |
|
MD5 | 483a2d85f60a90311f2d27029bb1a34b |
|
BLAKE2b-256 | a41786e48cc0efde924a9777dc05abf68543e8c9283eaaab4dc065784f00fc2d |
Close
Hashes for django_query_limiter-0.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 966953759ee95080cdb787937d51da1e14e9082338e0e45871262a3d2fa56211 |
|
MD5 | 5c3a8eee4bbc4f3624aae81b73b34e1a |
|
BLAKE2b-256 | eaa70847aa649593e173b450c750cd779a36d83f30f2c14b7f8fb72c4dc060a3 |