
Составные и частичные индексы в Django: разбор на замерах
Запрос с фильтром по статусу и дате начал отдавать по 800 мс на таблице в 4 млн строк. Разбираем, как составные и частичные индексы в Django меняют план запроса и когда они реально работают.

Запрос с фильтром по статусу и дате начал отдавать по 800 мс на таблице в 4 млн строк. Разбираем, как составные и частичные индексы в Django меняют план запроса и когда они реально работают.

Два параллельных запроса списали остаток пакета дважды, хотя код был обёрнут в atomic. Разбираем, на что atomic на самом деле рассчитан, при чём тут уровень изоляции PostgreSQL и где решение ломается на проде.

Вебсокеты на Django Channels отлично работают локально и падают под нагрузкой в проде. Разбираем, что проверить в конфигурации ASGI, Redis и Nginx до того, как соединения начнут рваться.

Три уровня кеша в Django и цена каждого: когда хватает кеша фрагмента, когда нужна вся страница и почему кеш QuerySet чаще вредит, чем помогает.

Периодические задачи в Django на Celery beat выглядят просто, пока планировщик не запустит одну задачу дважды или не пропустит её после деплоя. Разбираем приёмы, которые убирают дубли, гонки и молчаливые провалы.

Как подключить Celery к Django-проекту, вынести отправку писем и генерацию отчётов из веб-запроса и не собрать типовые грабли с брокером, сериализацией и запуском воркера.

Три инструмента подготовки данных в тестах Django — JSON-фикстуры, factory_boy и ручная сборка — дают разный результат по скорости и хрупкости. Разбираем, что когда выбрать и где каждый ломается.

Две ветки создали миграции 0042 на одну модель. При слиянии Django падает с InconsistentMigrationHistory. Разбираем, откуда берётся конфликт и как его чинить без дропа базы.

Список из 200 тысяч записей отдаёт 502, а фильтр по внешнему ключу генерирует лишний запрос на каждую строку. Разбираем типичные ошибки пагинации, фильтрации и сортировки в Django REST Framework.

В сериализаторе, в валидаторе поля, в методе validate или в модели — DRF даёт четыре места под одну проверку. Разбираем, что где уместно и чем оборачивается неверный выбор.

JWT в Django REST Framework часто настраивают за пять минут по документации и выкатывают. А потом токены не отзываются, лежат в localStorage и живут по неделе. Разбираем, что проверить до релиза.

Разбираем, где в Django REST Framework провести границу между сериализатором и вьюсетом, чтобы одна валидация не расползлась по трём местам, а список и деталь не тянули одинаковый тяжёлый запрос.