Как отслеживать запросы, генерируемые Django
Python
Middle
Без компании
Как отслеживать запросы, генерируемые Django
Ответы
Для отслеживания запросов в Django можно использовать несколько подходов:
- **Логирование SQL-запросов**
Добавьте в `settings.py`:
```
LOGGING = {
'version': 1,
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
},
},
'loggers': {
'django.db.backends': {
'level': 'DEBUG',
'handlers': ['console'],
}
}
}
```
- **Django Debug Toolbar**
Установите пакет и добавьте в `settings.py`:
```
INSTALLED_APPS += ['debug_toolbar']
MIDDLEWARE += ['debug_toolbar.middleware.DebugToolbarMiddleware']
INTERNAL_IPS = ['127.0.0.1']
```
- **Сигналы**
Можно подключиться к сигналу `connection_created`:
```
from django.db.backends.signals import connection_created
from django.dispatch import receiver
@receiver(connection_created)
def log_queries(sender, connection, **kwargs):
print(connection.queries)
```
- **Middleware**
Создайте кастомное middleware для логирования:
```
class QueryLoggerMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
from django.db import connection
print(f"Total queries: {len(connection.queries)}")
return response
```