Django Silk
django-silk предоставляет подробное профилирование Django приложений с красивым веб-интерфейсом.
Установка
Настройка
Профилирование функций
1from silk.profiling.profiler import silk_profile
2
3@silk_profile(name='View Books')
4def book_list(request):
5 books = Book.objects.select_related('author').all()
6 return render(request, 'books.html', {'books': books})
7
8# Или для конкретных блоков кода
9def process_data(data):
10 with silk_profile(name='Data Processing'):
11 # Дорогие операции
12 result = expensive_operation(data)
13 return result
Настройка профилирования
1# settings.py
2# Включить профилирование только для определенных пользователей
3SILKY_PYTHON_PROFILER = True
4SILKY_PYTHON_PROFILER_RESULT_PATH = '/tmp/silk/'
5
6# Ограничить количество записей
7SILKY_MAX_RECORDED_REQUESTS = 1000
8SILKY_MAX_RECORDED_REQUESTS_CHECK_PERCENT = 10
9
10# Фильтрация запросов
11SILKY_IGNORE_PATHS = [
12 '/admin/',
13 '/static/',
14 '/media/',
15]
Анализ производительности
Silk показывает:
- Время выполнения запросов
- SQL запросы и их время
- Использование памяти
- Профили Python кода
- Статистику по эндпоинтам
FAQ
Q: Можно ли использовать в production?
A: Не рекомендуется из-за накладных расходов на производительность.
Q: Как очистить старые записи?
A: Используй команду manage.py или настрой автоматическую очистку.