⚡️Django получает новый autoreloader: знакомьтесь с django-watchfiles
Django давно умеет автоматически перезапускать runserver
при изменении Python-файлов. Но стандартная реализация работает неэффективно — она постоянно опрашивает файловую систему, нагружая CPU и замедляя работу.
Теперь появился более современный и быстрый способ — `django-watchfiles`, который использует нативные API отслеживания файловых изменений.
Преимущества нового подхода:
❇️ Перезапуск сервера происходит быстрее
❇️ Меньше нагрузка на процессор и экономия энергии
❇️ Более надёжная работа благодаря Rust-библиотеке watchfiles
До этого Django предлагал интеграцию с Watchman, но она требовала отдельной установки и обслуживания, а библиотека pywatchman
давно не обновлялась.
Теперь у нас есть полноценная альтернатива: кроссплатформенная библиотека watchfiles
.
Настроить всё очень просто
1️⃣ Установите пакет (например, через uv):
uv add django-watchfiles
2️⃣ Добавьте приложение в INSTALLED_APPS
:
INSTALLED_APPS = [
...,
"django_watchfiles",
...,
]
3️⃣ Запустите проект и убедитесь, что autoreloader работает через WatchfilesReloader
:
./manage.py runserver
Watching for file changes with WatchfilesReloader
📊 На проекте среднего размера (~385k строк кода + 206 пакетов) на M1 MacBook стандартный Django reloader потреблял ~10% CPU каждые 2 секунды, в то время как django-watchfiles
использовал 0% CPU.
🐸 Библиотека питониста
#буст