Почему Django не выполняет горячую перезагрузку на Mac M1?

У меня есть приложение на Django. Когда я пользовался компьютером Intel Mac, его функция горячей перезагрузки работала. Однако год назад я перешел на один из новых компьютеров Mac и теперь не могу выполнить его горячую перезагрузку.

Вот мой settings.py:

Когда я запускаю сервер (python3 manage.py runserver):

Watching for file changes with StatReloader
Performing system checks...
April 18, 2025 - 02:29:48
Django version 3.2.13, using settings 'settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Каждый раз, когда я обновляю какой-либо файл .py, я ожидаю, что сервер перезагрузится, но этого не происходит.

Вы можете установить uvicorn пакет для перезагрузки, который также имеет другие интересные функции, такие как -

  1. перезагрузить

  2. определение порта

  3. определение хоста

  4. назначение работников (процессов)

uvicorn your_app_name.wsgi:application --host 0.0.0.0 --port 8000 --reload --workers 4

для выполнения ваших требований вам будет достаточно этой команды

uvicorn your_app_name.wsgi:application --reload

Лучше использовать серверную часть watchdog в macOS, особенно с новыми файловыми системами, такими как APFS, используемыми в Apple Silicon.

Установите зависимость:

pip install watchdog

Затем запустите сервер с помощью:

python manage.py runserver --reload

Я полагаю, это происходит потому, что Apple Silicon по-другому обрабатывает просмотр файлов. Поэтому попробуйте установить watchdog

pip install watchdog

Django автоматически переключится на улучшенный режим просмотра файлов Watchdog.

Если это не сработает, подключите его принудительно. settings.py:

import sys
if sys.platform == 'darwin':
    from django.utils.reloader import watchman
    watchman.USE_WATCHMAN = True

Программа наблюдения по умолчанию пропускает изменения файлов на компьютерах Mac с операционной системой ARM. Watchdog использует собственные API для macOS, которые действительно работают.

Вернуться на верх